一、前言
本专栏用于记录我之前学习Python的一些知识点以及学习开设的Python编程基础课的一些实验等等内容。
目前我们课程Python学习到了控制结构,然后老师布置了实验让我们去完成,有七道程序填空题,三道编程题。
以下程序仅供参考,请勿盲目照搬,谢谢!
二、我的环境
- 电脑系统:Windows 11
- 语言版本:Python 3.10.4
- 编译器:VSCode
三、实验目的与要求
- 掌握 random 库的用法。
- 掌握分支语句的常用嵌套结构。
- 掌握循环语句的常用嵌套结构。
四、实验任务
1、程序填空
【填空6-1】随机产生大写字母并逆向输出。
随机产生 4 个 A-Z 之间的数字,使其挨个输出,再逆向合并,用空格间隔后输出,随机
种子为 7。请完善代码。
importrandomasrr.seed(7) s=''foriinrange(4): ch=chr(r.randrange(65, 90, 1)) print(ch) s=ch+' '+sprint(s)
它运行的结果是:
KEMUUMEK
这里randrange()函数中前两个参数是A和Z的十进制编码。
【填空6-2】五角星数。
五角星数是 5 位的自幂数(如:54748=5^5 + 4^5+ 7^5+ 4^5+ 8^5),计算并输出 10000
~100000 之间(不含 100000)所有的五角星数。请完善代码。
foriinrange(10000, 100000): n1=i//10000n2= (i-n1*10000) //1000n3= (i-n1*10000-n2*1000) //100n4= (i-n1*10000-n2*1000-n3*100) //10n5=i%10ifi==n1**5+n2**5+n3**5+n4**5+n5**5: print(i)
它运行的结果是:
547489272793084
【填空6-3】输出四方形九九乘法表。
要求输出如下所示的四方形九九乘法表。请完善代码。
foriinrange(1,10): forjinrange(1,10): print("{}×{}={:<2} ".format(i,j,i*j),end="") print()
它运行的结果是:
1×1=11×2=21×3=31×4=41×5=51×6=61×7=71×8=81×9=92×1=22×2=42×3=62×4=82×5=102×6=122×7=142×8=162×9=183×1=33×2=63×3=93×4=123×5=153×6=183×7=213×8=243×9=274×1=44×2=84×3=124×4=164×5=204×6=244×7=284×8=324×9=365×1=55×2=105×3=155×4=205×5=255×6=305×7=355×8=405×9=456×1=66×2=126×3=186×4=246×5=306×6=366×7=426×8=486×9=547×1=77×2=147×3=217×4=287×5=357×6=427×7=497×8=567×9=638×1=88×2=168×3=248×4=328×5=408×6=488×7=568×8=648×9=729×1=99×2=189×3=279×4=369×5=459×6=549×7=639×8=729×9=81
【填空6-4】 百元买百鸡。
由我国古代数学家张丘建在《算经》一书中提出:“鸡翁一,值钱
五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何? ”题意如下:
已知公鸡 5 元一只,母鸡 3 元一只,小鸡 3 只一元,用 100 元买一百只鸡。其中公鸡、
母鸡、小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只? 请完善代码。
print('%s%3s%3s'% ('公鸡', '母鸡', '小鸡')) forcockinrange(1,19): forheninrange(1,32): chick= (100-cock*5-hen*3) *3ifchick!=0andchick%3==0andchick+hen+cock==100: print(cock, " ", hen, " ", chick, " ")
它运行的结果是:
公鸡母鸡小鸡418788118112484
【填空6-5】复读句子。
户输入复读次数和复读句子,将句子按照逗号进行分割成子句,将
子句和整句按照复读次数进行输出。例如:输入的复读次数为 2,输入的句子为“一起向未
来!Together for a Shared Future!”,则让它先输出每个子句 2 遍,再输出整句 2 遍。请完善
代码。
n=int(input("请输入复读次数:")) s=input("请输入复读句子:") sub=s.split("!") foriinrange(len(sub)): forjinrange(n): print(sub[i]) forjinrange(n): print(s)
它运行的结果是:
请输入复读次数:2请输入复读句子:一起向未来!TogetherforaSharedFuture一起向未来一起向未来TogetherforaSharedFutureTogetherforaSharedFuture一起向未来!TogetherforaSharedFuture一起向未来!TogetherforaSharedFuture
【填空6-6】 猜数游戏。
。由随机函数从 1~10 中生成一个整数,用户最多可以猜数 3 次,每
次猜楼数后都会告诉用户是猜中了还是猜大了还是猜小了,如果猜错了,还会显示剩余的可
猜次数。请完善代码。
importrandomn=random.randint(1, 11) fortinrange(3): g=eval(input("请输入数字(1~10):")) ifg==n: print("你猜中了!") breakelifg<n: print("你猜小了,还有{}次机会!".format(2-t)) else: print("你猜大了,还有{}次机会!".format(2-t)) if2-t<3: print("超过三次,猜数结束!")
它运行的结果是:
请输入数字(1~10):10你猜大了,还有2次机会!请输入数字(1~10):2你猜小了,还有1次机会!请输入数字(1~10):4你猜小了,还有0次机会!超过三次,猜数结束!
【填空6-7】账号密码登录。
给用户三次输入用户名和密码的机会,要求如下:
用户输入账号,若账号为 “admin”,则提示用户输入密码,若密码为“123456”,则提
示“登录成功”,并且退出循环;否则提示“密码错误!”。若账号不为“admin”,则提示“账
号错误!”
如果 3 次都不正确,则提示“3 次输入有误!退出程序。”。
请完善代码。
name="admin"password="666666"count=0whilecount<3: userInput=input("请输入账号:") ifuserInput==name: userInput=input("请输入密码:") ifuserInput==password: print("登录成功!") breakelse: print("密码错误!") else: print("账户错误!") count=count+1ifcount==3: print("3次输入有误!退出程序。")
它运行的结果是:
请输入账号:admin请输入密码:666666登录成功!请输入账号:admin请输入密码:123密码错误!请输入账号:admin请输入密码:666666登录成功!请输入账号:ad账户错误!请输入账号:admin请输入密码:123密码错误!请输入账号:admin请输入密码:666666登录成功!请输入账号:a账户错误!请输入账号:admin请输入密码:123密码错误!请输入账号:admin请输入密码:666密码错误!3次输入有误!退出程序。
2、编程
【编程6-1】产生随机数并求平均值。
产生 3 个 0-9 之间的随机数字,使其逐个输出,最后将该 3 个随机数的平均值输出。
提示: random.randint(i,j)用于产生一个 [i,j] 之间的随机整数。
importrandomsum=0foriinrange(3): n=random.randint(0, 9) print("0~9之间的随机数为:{}".format(n)) sum+=nprint("平均值为:{}".format(sum/3))
它运行的结果是:
0~9之间的随机数为:60~9之间的随机数为:30~9之间的随机数为:5平均值为:4.666666666666667
【编程6-2】水仙花数。
水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身(例如:1^3
+ 5^3+ 3^3 = 153),计算并输出所有的水仙花数。
forninrange(100,1000): i=n//100j=n//10%10k=n%10ifn==i*i*i+j*j*j+k*k*k: print(n, end=" ")
它运行的结果是:
153370371407
【编程6-3】50 以内的质数。
质数又称素数,一个大于 1 的自然数,除了 1 和它自身外,
不能被其他自然数整除的数叫做质数;否则称为合数(规定 1 既不是质数也不是合数)。编
写程序先输出一行文字:“50 以内的质数有:”,然后遍历 50 以内的所有质数并输出。
提示:可以采用 for 循环语句嵌套 for 循环形式,如果不是质数则退出内循环,再继续
下一轮外循环遍历;否则输出该质数。
s=[] foriinrange(3, 51): k=Trueforjinrange(2, i): ifi%j==0: k=Falsebreakifk==True: s.append(i) forjins: print(j, end=' ')
它运行的结果是:
3571113171923293137414347
五、最后我想说
本期的Python实验就到这里结束,本期的题目还算简单,稍微理解一下就能完成,后续我也会持续更新后续实验的,敬请期待。 创作不易,期待得到你们的支持,谢谢!