《计算机与Python程序设计基础》实验课程期末编程练习题
目录
1.输入任意大的自然数,输出各位数字的和。例如输入12345,输出结果为: 自然数12345各位数字之 和为15。
2.任意输入一个字符串,判断是不是回文字符串: 比如"abcba","12321"就是回文字符串。
3.利用turtle 模块编程,画笔宽度为5,颜色为红色,画出一个边长为200的等边三角形。
4.任意输入一个阿拉伯数字,编程转换成中文数字。比如:1234567890 -> 壹贰叁肆伍陆柒捌玖零'''。
5.编写程序,在1到100,生成一个含10个随机数的列表,要求所有元素不相同,并输出列表。
6.获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
7.输入一个字符串,要求截取最后两个字符替换最前面的两个字符。 如:"abcdefg"变成"fgcde"。
12.循环控制的序列是列表,随机生成10个1~100的整数,求最小值、最大值和平均值。
13.显示100~200不能被3整除的数,要求一行显示10个数。
15.编程显示Fibonacci数列:1、1、2、3、5、8……的前20项。要求每行显示5项。
20. 利用for循环求1-100中所有奇数的和以及所有偶数的和
23.一个小球从h米高度自由落下,每次落地后反跳回原高度的 2/3再落下,求它在第m次落地时,共经过多少 米?第m次落地后反弹多高?分两行输入h和m, 输出结果保留两位小数
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<b): #a始终比b大,如果比b小则交换位置
c=a
a=b
b=c
a=a-b
return a
def min_lcm(a,b):
if(a<b):
c=a
a=b
b=c
i=1
while 1:
if(a%b==0):
return a
a=a*i
i+=1
print("两数最大公约数为:%d"%max_gcd(m,n))
print("两数最小公倍数为:%d"%min_lcm(m,n))
这道题应该有点超纲(因为函数没学到),如果不用函数的话会很杂乱。
求最大公约数用辗转相除法,求最小公倍数用较大的数暴力求解
11.猴子吃桃子问题:小猴在第1天摘了若干个桃子,当天吃掉一半多一个;第2天接着吃了剩下的桃子的 一半多一个。以后每天都吃尚存桃子的一半多一个,到第7天早上要吃时只剩下一个,问小猴最初共摘 下多少个桃子?
num=1
for i in range(6):
num=(num+1)*2
print(num)