Python程序设计实验期末考试题解(部分)

Python程序设计实验期末考试题解(部分),第1张

Python程序设计实验期末考试题解(部分) 《计算机与Python程序设计基础》实验课程期末编程练习题

目录

《计算机与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+1
14. 使用牛顿迭代法求解平方根。计算一个正实数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 ...+99
sum=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+1
 28.编写程序,读入一个字符串,去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出

输入样例:

ad2f3adjfeainzzzv

输出样例:

23adefijnvz

s=input("请输入一个字符串:")
set1=set(s)
print(*sorted(list(set1))) #转换成列表后解包,*是
print("".join(sorted(list(set1)))) #另一种方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5689891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存