完整word版,python练习题-答案 下载本文

f(h=7) f(a=3) 答案:1 2 3 2 1 7 错误

24. 阅读程序,打印结果是

def sort(number1,number2): if number1

n1,n2=sort(3,2) print('n1 is ',n1) print('n2 is ',n2) 答案:n1 is 2 n2 is 3

25. 阅读程序,打印结果是 10 60 def demo(m, n): if m>n:

m, n = n, m p = m*n while m!=0: r = n%m n = m m = r return (n,p//n) print( demo(20, 30))

三、程序填空题

1. 下面代码的功能是,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。请把

缺少的代码补全。 import random

x = [random.____________(1,20) for i in range(_______)] r = dict() for i in x:

r[i] = r.get(i, _____)+1 for k, v in r.items():

print(k, v) 答:

分别填写randint、50、0

2. 生成包含1000个随机字符的字符串,然后统计前20个高频字符,最后以15个位左对齐输出高

频字符,以5个位右对齐输出个数。请把缺少的代码补全。

import random

x = string.ascii_letters + string.digits + string.punctuation y = [ for i in range(1000)] d = dict()

for ch in y:

d[ch] = d.get(ch, 0) + 1

items=list(d.items())

items.sort( ,reverse=True) for i in range(20):

word,count = items[i]

print( %(word,count))

答案:import string 、 random.choice(x) 、key= lambda x:x[1]、“%-15s]”

3. 用户输入5,打印如右图字符金字塔图形,请补全代码: n=input('输入行数:') for i in range(1,n+1):

print( ,end=‘ ') for j in range(1,2*i):

print('&', ) print()

答案:n=int(n),' '*(n-i),end=''

4. 质因数分解,如输入60,则得到60 = 2 * 2 * 3 * 5. 请补全代码: x=eval(input(\请输入小于1000的整数:\)) k=2

while x>1:

if : print(k,end=\) x = x//k if x >1:

print(\,end=\) else:

答案:print(x,\,end=\),x % k==0 ,k += 1

5. 验证哥德巴赫猜想:一个大于等于6的偶数可以表示为两个素数之和,请补全代码。 import math

x=eval(input(“输入一个数”))

while x<6 or x%2==1: #大于6的偶数 x=eval(input(“输入一个数”))

for n1 in :

m1=int(math.sqrt(n1)+1)

for i in range(2,m1): #2-sqrt(n1) if : break else:

m2=math.ceil(math.sqrt(n2)+1) for j in range(2,m2):

if n2%j==0 and j

else:

print(x,'=',n1,'+',n2)

答案:range(3,x//2,2),n1%i==0, n2=x-n1, break 6. 右对齐九九乘法表,请补全代码:

for i in range(1,10):

s1=str(i)+'×'+str(j)+'='+str(i*j) print( )

print()

答案:for j in range(1,i+1):,'%8s'%(s1),end=''

7. 输出右边图形,请补充程序:

for i :

print((‘ *’*(2*i-1)).center(30)) for i in range(6, 0, -1):

print( )

答案:in range(6);(' *‘(2*i-1)).center(5*n)

8. 下面代码判断回文串,请补全代码:

s='雾锁山头山锁雾' low=0

high= while low

if : #倒序和顺序不一样 print(s,\不是回文\ low +=1

else:

print(s,\是回文串\

答案:len(s)-1,s[low]!=s[high],break,high -=1;

9. 输出右边图形,请补充程序:

s='''I am a teacher! You are students!''' print('='*30)

print('统计信息'.center(28)) print( ) item_width=25 line=s.count('\\n')+1 word=s.split()

char=list(s) #包含空格、标点符号 w_num=0

for w in word:

w_num+=

print('%-*s ]'%(item_width-3,'行数',line))

print('%-*s ]'%( ,'单词数',len(word)))

print('%-*s ]'%(item_width-10,'字符数(包含空格)', )) print('%-*s ]'%(item_width-11,'字符数(不包含空格)',w_num)) print('-'*30)

答案:'-'*30;len(w);item_width-4;len(char)

10. 输出右边图形,请补充程序:

[1]def demo(t):

[1, 1] print([1]) [1, 2, 1][1, 3, 3, 1] [1, 4, 6, 4, 1] line = [1,1]

[1, 5, 10, 10, 5, 1] for i in range(2,t): [1, 6, 15, 20, 15, 6, 1][1, 7, 21, 35, 35, 21, 7, 1]

[1, 8, 28, 56, 70, 56, 28, 8, 1] for j in range(0,len(line)-1): [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] r.append( ) line = [1]+r+[1] print(line) demo( )

答案:print([1,1]),r = [],line[j]+line[j+1],10

四、编程题

1. 编写程序,在D盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world。 答:

fp = open(r’D:\\test.txt’, ‘a+’) print(‘hello world’, file=fp) fp.close()

2. 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇

数下标的元素不变。(提示:使用切片。) 答:

import random

x = [random.randint(0,100) for i in range(20)] print(x) y = x[::2]

y.sort(reverse=True) x[::2] = y print(x)

3. 编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。再编写测

试函数。 答:

import math def IsPrime(v):

n = int(math.sqrt(v)+1) for i in range(2,n): if v%i==0: return 'No' else:

return 'Yes' print(IsPrime(77))

4. 编写函数,模拟Python内置函数sorted(lst)。 答:

def sorted(v): t = v[::] r = [] while t:

tt = min(t) r.append(tt) t.remove(tt)

return r

print(sorted([1,3,2,4])

5. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,

并输出结果。 答:

import random

x = [random.randint(0,100) for i in range(20)] print(x) y = x[0:10] y.sort() x[0:10] = y y = x[10:20]

y.sort(reverse=True) x[10:20] = y print(x)

x y 6. 编写程序,运行后用户输入4位整数作为年份,判断其是

否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。 x<0 0 答:

x = input('Please input an integer of 4 digits meaning the year:')

0<=x<5 x x = eval(x)

if x@0==0 or (x%4==0 and not x0==0):

5<=x<10 3x-5 print('Yes')

else:

print('No') 10<=x<20 0.5x-2 7. 编写程序,实现分段函数计算,如下表所示。

20<=x 0 答:

x = input('Please input x:') x = eval(x)

if x<0 or x>=20: print(0) elif 0<=x<5: print(x) elif 5<=x<10: print(3*x-5) elif 10<=x<20:

print(0.5*x-2)