import math for i inrange(10000): # 转化为整型值 x = int(math.sqrt(i + 100)) y = int(math.sqrt(i + 268)) if(x * x == i + 100) and (y * y == i + 268): print i
for m inrange(101, 201): k = int(sqrt(m + 1)) for i inrange(2, k + 1): if m % i == 0: leap = 0 break if leap == 1: print'%-4d' % m h += 1 if h % 10 == 0: print'' leap = 1
defreduceNum(n): print'{} = '.format(n), # print末尾加逗号把换行符替代成一个空格 ifnotisinstance(n, int) or n <= 0: print'请输入一个正确的数字!' exit(0) elif n in [1]: print'{}'.format(n) while n notin [1]: # 循环保证递归 for index in xrange(2, n + 1): if n % index == 0: n /= index # n等于n/index if n == 1: print index else: # index 一定是素数 print'{} *'.format(index), break
reduceNum(90) reduceNum(100) reduceNum(3)
实例 15
题目:
利用条件运算符的嵌套来完成此题:学习成绩>=90 分的同学用 A 表示,60-89
分之间的用户用 B 表示,60 分一下的用 C 表示。
程序分析: 程序分析:(a>b)?a:b
这是条件运算符的基本例子。 源码:
题目:
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析: 利用 while 语句,条件为输入的字符不为’’。
源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/python # -*- coding:UTF-8 -*-
s = raw_input("inout a string:\n") letters = 0 space = 0 digit = 0 others = 0 for c in s: if c.isalpha(): letters += 1 elif c.isdigit(): digit += 1 elif c.isspace(): space += 1 else: others += 1 print'char = %d, space = %d, dight = %d, others = %d' % (letters, space, digit, others)
实例 18
题目: 求 s = a + aa + aaa + aaaa + aa…a 的值,其中
a 是一个数字。例如 3 + 22 + 222 + 2222 +22222(此时共有 5
个数相加),几个数相加由键盘控制。 程序分析:
关键是计算出每一项的值。 源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/python # -*- coding:UTF-8 -*-
Tn = 0 Sn = [] n = int(raw_input('请输入相加数的个数n = :\n')) a = int(raw_input('请输入数的大小a = :\n')) for count inrange(n): Tn += a a *= 10 Sn.append(Tn) print Tn
Sn = reduce(lambda x, y: x + y, Sn) print'求和:%d5' % Sn
from sys import stdout # j保存了1000以内的所有正整数 # s的初值与j相同,每找到一个j的因子,就用s减去这个因子的值,当s的值减为0时,j就是一个完数 # 每找到一个因子,n的值就加一 for j inrange(2, 1001): k = [] # 保存因子列表 n = -1 s = j for i inrange(1, j): if j % i == 0: n += 1 s -= i k.append(i)
if s == 0: print j for i inrange(n): stdout.write(str(k[i])) stdout.write(' ') print k[n] # 打印最后一个因子并输出换行