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

自用
摘要由CSDN通过智能技术生成

《计算机与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次落地后反弹多高?分两行输入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<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)
  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值