目录
《计算机与Python程序设计基础》实验课程期末编程练习题
一些小tips:
1.输入任意大的自然数,输出各位数字的和。例如输入12345,输出结果为: 自然数12345各位数字之 和为15。
2.任意输入一个字符串,判断是不是回文字符串: 比如"abcba","12321"就是回文字符串。
3.利用turtle 模块编程,画笔宽度为5,颜色为红色,画出一个边长为200的等边三角形。
4.任意输入一个阿拉伯数字,编程转换成中文数字。比如:1234567890 -> 壹贰叁肆伍陆柒捌玖零'''。
5.编写程序,在1到100,生成一个含10个随机数的列表,要求所有元素不相同,并输出列表。
6.获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
7.输入一个字符串,要求截取最后两个字符替换最前面的两个字符。 如:"abcdefg"变成"fgcde"。
8.求1到200能够被17整除的最大数
9.求出这两个整数的最大公约数和最小公倍数。
11.猴子吃桃子问题:小猴在第1天摘了若干个桃子,当天吃掉一半多一个;第2天接着吃了剩下的桃子的 一半多一个。以后每天都吃尚存桃子的一半多一个,到第7天早上要吃时只剩下一个,问小猴最初共摘 下多少个桃子?
12.循环控制的序列是列表,随机生成10个1~100的整数,求最小值、最大值和平均值。
13.显示100~200不能被3整除的数,要求一行显示10个数。
14. 使用牛顿迭代法求解平方根。计算一个正实数a的平方根可以根据牛顿迭代法实现:首先假设t=a,开 始循环,如果t=a/t(或小于容差),则t等于a的平方根,循环结束后返回结果;否则将t和a/t的平均 值赋给t,继续循环。
15.编程显示Fibonacci数列:1、1、2、3、5、8……的前20项。要求每行显示5项。
16. 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。 例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数 请按照从小到大的顺序输出 1000 以内的水仙花数(3位数),并用"逗号"分隔输出结果
20. 利用for循环求1-100中所有奇数的和以及所有偶数的和
21.编程求1-2+3-4+5 ...+99
22.输入一年份,判断该年份是否是闰年并输出结果
23.一个小球从h米高度自由落下,每次落地后反跳回原高度的 2/3再落下,求它在第m次落地时,共经过多少 米?第m次落地后反d多高?分两行输入h和m, 输出结果保留两位小数
25.一个班的身高已经量好了,请输出其中超过平均身高的那些身高.程序的输入为一行数据,以空格分 隔,每个数据都是一个正整数.程序要输出那些超过输入的身高的平均数的输入值,每个数后面有一个 空格,输出的顺序和输入的相同,平均身高要求保留小数点后两位
26.输入一个正整数n(1≤n<7). 输出n行由大写字母A开始构成的三角形字符阵列,其中每个字母后面都有一个空格.
28.编写程序,读入一个字符串,去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出
一些小tips:
1.用input()之前先想好自己需要的是什么,如果是字符串就不需要eval()
2.很多题目虽然用一些特定的函数或者方法可以使代码较为简洁,但是如果水平不够,也可以选择用简单的循环和条件语句来实现
1.输入任意大的自然数,输出各位数字的和。例如输入12345,输出结果为: 自然数12345各位数字之 和为15。
难点在于对任意大的自然数各位求和,可以采用从头到尾遍历的方法(使用len()函数确定下限),也可以采用从末位逐步取数。
这里采用的是第二种更简单的方法。
n=eval(input("请输入任意大的自然数:")) sum=0 while(n): #n取完之后自然为False sum+=n%10 #取最后一位累加 n=n//10 #截短一位 print("此自然数各位之和为:%d"%sum)
2.任意输入一个字符串,判断是不是回文字符串: 比如"abcba","12321"就是回文字符串。
和第一题异曲同工,用len()函数遍历即可。
a=input("请输入要判断的字符串:") for i in range(0,len(a)-1): if(a[i]!=a[len(a)-1-i]): #这里要额外-1因为是从0开始的 print("不是回文字符串") break; else: print("是回文字符串")
3.利用turtle 模块编程,画笔宽度为5,颜色为红色,画出一个边长为200的等边三角形。
import turtle as t t.pensize(5) t.pencolor('red') t.forward(200) t.left(120) t.forward(200) t.left(120) t.forward(200)
理解即可
4.任意输入一个阿拉伯数字,编程转换成中文数字。比如:1234567890 -> 壹贰叁肆伍陆柒捌玖零'''。
最简单的方法是用十个if(如果你不会字典的话)
这里采用字典
dict1={1:'壹',2:'贰',3:'叁',4:'肆',5:'伍',6:'陆',7:'柒',8:'捌',9:'玖',0:'零'} key=eval(input("请输入一个阿拉伯数字:")) print(dict1[key])
5.编写程序,在1到100,生成一个含10个随机数的列表,要求所有元素不相同,并输出列表。
import random lst=random.sample(range(1,101),10)#sample可以保证互不相同且随机 print(lst)
最简洁的写法
6.获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
s=input("请输入一串字符串:") sum="" for i in s: if(i==" "): print(sum) sum="" else: sum=sum+i print(sum)
简单写法
s=input("请输入一串字符串:") print(*s.split(" ")) #*拆分列表
简洁写法
7.输入一个字符串,要求截取最后两个字符替换最前面的两个字符。 如:"abcdefg"变成"fgcde"。
s1=input("请输入一串字符串:") s2=s1[-2:] s2+=s1[2:-2] print(s2)
切片即可
8.求1到200能够被17整除的最大数
n=0 for i in range(1,201): if(i%17==0): n=i print("1~200中能被17整除的最大数是:%d"%n)
最后一个自然是最大数
9.求出这两个整数的最大公约数和最小公倍数。
m,n=eval(input("请输入两个逗号隔开的整数:")) def max_gcd(a,b): while(a-b): if(a这道题应该有点超纲(因为函数没学到),如果不用函数的话会很杂乱。
求最大公约数用辗转相除法,求最小公倍数用较大的数暴力求解
11.猴子吃桃子问题:小猴在第1天摘了若干个桃子,当天吃掉一半多一个;第2天接着吃了剩下的桃子的 一半多一个。以后每天都吃尚存桃子的一半多一个,到第7天早上要吃时只剩下一个,问小猴最初共摘 下多少个桃子?num=1 for i in range(6): num=(num+1)*2 print(num)12.循环控制的序列是列表,随机生成10个1~100的整数,求最小值、最大值和平均值。import random lst=[] for i in range(10): lst.append(random.randint(1,101)) #这里没说10个随机数不相同,不能用sample sum=0 for i in lst: sum+=i avg=sum/10 print(lst) print("最小值为:%d"%min(lst)) print("最大值为:%d"%max(lst)) print("平均值为:%.2f"%avg)13.显示100~200不能被3整除的数,要求一行显示10个数。counter=1 for i in range(100,201): if(i%3!=0): print(i,end=" ") if(counter%10==0): print() counter=counter+114. 使用牛顿迭代法求解平方根。计算一个正实数a的平方根可以根据牛顿迭代法实现:首先假设t=a,开 始循环,如果t=a/t(或小于容差),则t等于a的平方根,循环结束后返回结果;否则将t和a/t的平均 值赋给t,继续循环。a=eval(input("输入一个正实数a:")) t=a while(t>a/t): t=(t+a/t)/2 print("a的平方根是:%f"%t)15.编程显示Fibonacci数列:1、1、2、3、5、8……的前20项。要求每行显示5项。n=list(range(1,21)) n[0]=1 n[1]=1 counter=1 #计数器 for i in range(2,20): n[i]=n[i-1]+n[i-2] for i in range(20): print(n[i],end=" ") if(counter%5==0): #逢5进1 print() counter=counter+1 #注意这条语句的位置和缩进16. 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。 例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数 请按照从小到大的顺序输出 1000 以内的水仙花数(3位数),并用"逗号"分隔输出结果for i in range(100,1000): if( ( (i//100)**3+(i//10%10)**3+(i%10)**3)==i ): print("%d"%i,end=",") print("b ")17.输入某年某月某日,判断这一天是这一年的第几天?
20. 利用for循环求1-100中所有奇数的和以及所有偶数的和ssum=0 osum=0 for i in range(1,101): if(i%2==0): osum=osum+i else: ssum=ssum+i print("1~100的奇数和为:%d"%ssum) print("1~100的偶数和为:%d"%osum)21.编程求1-2+3-4+5 ...+99sum=0 for i in range(1,100): if(i%2==0): sum-=i else: sum+=i print("1-2+3-4+5...+99的和为%d"%sum)22.输入一年份,判断该年份是否是闰年并输出结果凡符合下面两个条件之一的年份是闰年
1)能被4整除但不能被100整除
2)能被400整除
输入样例:
2019
输出样例: 2
019 不是闰年
year=eval(input("请输入一个年份:")) if( (year%4==0 and year%100!=0) or year%400==0 ): print("%d是闰年"%year) else: print("%d不是闰年"%year)23.一个小球从h米高度自由落下,每次落地后反跳回原高度的 2/3再落下,求它在第m次落地时,共经过多少 米?第m次落地后反d多高?分两行输入h和m, 输出结果保留两位小数输入样例:
100 20
输出样例:
小球第20次落地时,共经过了499.82米
小球第20次落地后反d的高度是0.03米
h=eval(input("请输入高度h:")) m=eval(input("请输入次数m:")) sum=0 for i in range(m): sum+=h sum+=h*2/3 h=h*2/3 print("小球第%d次落地时,共经过了%.2f米"%(m,sum)) print("小球第%d次落地后反d的高度是%.2f米"%(m,h))25.一个班的身高已经量好了,请输出其中超过平均身高的那些身高.程序的输入为一行数据,以空格分 隔,每个数据都是一个正整数.程序要输出那些超过输入的身高的平均数的输入值,每个数后面有一个 空格,输出的顺序和输入的相同,平均身高要求保留小数点后两位输入样例:
143 174 119 127 117 164 110 128
输出样例:
143 174 164
s=input("请输入班内每人身高:") lst=s.split(" ") #按空格切割成整数列表 sum=0 avg=0 for i in lst: sum+=eval(i) avg=sum/(len(lst)) for i in lst: if(eval(i))>avg: print(i,end=" ");26.输入一个正整数n(1≤n<7). 输出n行由大写字母A开始构成的三角形字符阵列,其中每个字母后面都有一个空格.输入样例:
4
输出样例:
A B C D
E F G
H I
J
n=eval(input("输入一个正整数:")) ch=65 counter=n m=1 while(counter): print(chr(ch),end=" ") if(m==counter): print() counter=counter-1 m=0 #这里必须要m=0否则会无限循环 ch=ch+1 m=m+128.编写程序,读入一个字符串,去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
s=input("请输入一个字符串:") set1=set(s) print(*sorted(list(set1))) #转换成列表后解包,*是 print("".join(sorted(list(set1)))) #另一种方法欢迎分享,转载请注明来源:内存溢出
评论列表(0条)