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)