stdout.write(str(i)) stdout.write(\ n = n / i else: break print \'''
我的程序: import sys import math def IsPrim(n): if n==2:
return True
m = int(math.sqrt(n)) for e in range(3,m+1): if n%e == 0: return False return True
def Find(n,lt): if(n > 1):
for e in range(2,n+1): if n > 1:
if IsPrim(e): if n%e == 0: lt.append(e) n = n/e if(n > 1):
lt = Find(n,lt) lt.sort() return lt
if __name__ == '__main__': for n in range(10,100): lt = []
print n,Find(n,lt) 示例可以修改为:
from sys import stdout
n = int(raw_input(\print \
for i in range(2,n + 1): while n != 1:
if n % i == 0:
stdout.write(str(i))
stdout.write(\ n = n / i else: break
【程序15】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60- 89分之间的用B表示,
60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 2.程序源代码: 不支持这个运算符 '''
score = int(raw_input('input score:\\n')) if score >= 90: grade = 'A' elif score >= 60: grade = 'B' else:
grade = 'C'
print '%d belongs to %s' % (score,grade) '''
【程序17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\\n'. 2.程序源代码: '''
import string
s = raw_input('input a string:\\n') letters = 0 space = 0 digit = 0 others = 0 for c in s:
if c.isalpha(): letters += 1 elif c.isspace():
space += 1 elif c.isdigit(): digit += 1 else:
others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others) '''
[程序18]
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如 2+22+222+2222+22222(此时
共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 2.程序源代码: ''' Tn = 0 Sn = []
n = int(raw_input('n = :\\n')) a = int(raw_input('a = :\\n')) for count in range(n): Tn = Tn + a a = a * 10 Sn.append(Tn) print Tn
Sn = reduce(lambda x,y : x + y,Sn) print Sn '''
我的程序: import sys Tn = 0
n = int(raw_input('n = ')) a = int(raw_input('a = ')) for count in range(1,n+1): Tn *= 10
Tn += a*count
for x in range(count):
sys.stdout.write('%d' % a) print '' print Tn
【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。
1. 程序分析:请参照程序<--上页程序14. 2.程序源代码: '''
from sys import stdout for j in range(2,1001): k = [] n = -1 s = j
for i in range(1,j): if j % i == 0: n += 1 s -= i
k.append(i)
if s == 0: print j
for i in range(n): stdout.write(k[i]) stdout.write(' ') print k[n] '''
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 1.程序分析:见下面注释 2.程序源代码: '''
Sn = 100.0 Hn = Sn / 2
for n in range(2,11): Sn += 2 * Hn Hn /= 2
print 'Total of road is %f' % Sn
print 'The tenth is %f meter' % Hn
'''
【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一 个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天 剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了 多少。
1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: ''' x2 = 1
for day in range(9,0,-1): x1 = (x2 + 1) * 2 x2 = x1 print x1 '''
【程序22】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签 决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程 序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 2.程序源代码: '''
for i in range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1): if i != j:
for k in range(ord('x'),ord('z') + 1): if (i != k) and (j != k):
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')): print 'order is a -- %s\\t b -- %s\\tc--%s' % (chr(i),chr(j),chr(k)) '''
【程序23】
题目:打印出如下图案(菱形) * *** ***** *******