@Python课程设计
《Python课程设计》实验三Python
实验目的
- 熟悉程序设计结构的三种方式。
- 掌握if单分支语句、if二分支语句、if多分支语句及if语句嵌套的使用方法。
- 掌握 while语句的使用方法。
- 掌握for语句的使用方法。
- 理解带 else 子句的循环结构执行流程。
- 掌握循环嵌套的使用方法。
- 理解循环语句中的 break 语句和continue语句的作用。
- 了解使用循环和异常处理结构对用户输入进行约束的用法。
实验内容
(一)阅读程序,分析程序运行的结果,上机输入代码,并验证自己分析的结果是否正确。(30分)
-
写出下面程序的运行结果(10分)。
S=0
for i in range(1,101):
S+=i
else:
print(i) -
写出下面程序的运行结果(10分)。
s=0
for i in range(1,101):
s+=i
if i==50:
print(s)
break
else:
print(1) -
下面的程序是否能够正常执行,若不能,请解释原因,若能,请分析其执行结果。(10分)
from random import randint
result=set()
while True:
result.add(randint(1,10))
if len(result)==20:
break
print(result)
(二)编写程序,分析以下题目,设计算法,编写代码并运行
4. 请编写一个程序,输出随机生成的10个两位数,并且这些两位随机数是素数,判断素数的算法请参照教材P62页例4-11的算法思想。(20分)
-
有1、2、3、4四个数字,能组成多少个互不相同的3位数?(20分)
-
输入年份和月份,判断输出该月有多少天。(30分)
提示:
(1)1、3、5、7、8、10、12月份有31天,4、6、9、11月份有30天。
(2)2月闰年有29天,非闰年有28天。
(3)年份能被4整除且不能被100整除,或者能被400整除,则是闰年。 -
编写一个猜数游戏,该游戏会随机产生一个数字,用户可以随意输入一个数进行比较,在比较过程中,会不断提示用户输入的数是大了还是小了,直到用户输入的数等于随机数,程序终止。(30分)
-
编写程序,实现抓狐狸游戏。假设墙上有5个洞(编号为0、1,、2、3、4),其中一个洞里有狐狸,人类玩家输入洞口编号,如果洞里有狐狸就抓到了;如果洞里没有狐狸就第二天再来抓。但在第二天人类玩家来抓之前,狐狸会跳到隔壁的洞里。(50分)
-
6岁的小明上楼梯,一步只能迈1个或3个台阶,现在有段15个台阶的楼梯,要想上到15个台阶,编写程序计算小明共多少种上法。(50分)
-
聪明的尼姆游戏(人机对战)(50分)
尼姆游戏是个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。 在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一 半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。
在聪明模式中,计算机每次拿走足够多的物品使得堆的大小是 2 的幂次方减 1——也就 是 3,7,15,31 或 63。除了堆的大小已经是 2 的幂次方减 1,在其他情况下这样走都是符合游 戏规则的。在那种情况下,计算机就按游戏规则随机拿走一些。
编写程序,模拟聪明版本的尼姆游戏。
实验结果
(一)阅读程序,分析程序运行的结果,上机输入代码,并验证自己分析的结果是否正确。(30分)
-
写出下面程序的运行结果(10分)。
S=0
for i in range(1,101):
S+=i
else:
print(i)
-
写出下面程序的运行结果(10分)。
s=0
for i in range(1,101):
s+=i
if i==50:
print(s)
break
else:
print(1)
-
下面的程序是否能够正常执行,若不能,请解释原因,若能,请分析其执行结果。(10分)
from random import randint
result=set()
while True:
result.add(randint(1,10))
if len(result)==20:
break
print(result)
错误的原因:集合不能有重复的元素
所以把集合改为数组即可
(二)编写程序,分析以下题目,设计算法,编写代码并运行
4. 请编写一个程序,输出随机生成的10个两位数,并且这些两位随机数是素数,判断素数的算法请参照教材P62页例4-11的算法思想。(20分)
算法思想:
Step1:导入随机模块random
Step2:设置循环控制变量j的初值为0
Step3:若j小于10,生成一个两位的随机整数n,
Step4:如果n是2或者3,n是素数,输出n,j=j+1,返回Step3;否则假如n是偶数,n不是素数,结束本次循环,返回Step3;如果n不是偶数,计算n除6的余数m,若余数m不等于1且不等于5,n不是素数,结束本次循环,返回Step3;否则判断n是否能被3到n的平方根之间的奇数整除,若n能被一个奇数整除,则n不是素数,返回Step3,否则n是素数,输出n,j=j+1,返回Step3。
-
有1、2、3、4四个数字,能组成多少个互不相同的3位数?(20分)
-
输入年份和月份,判断输出该月有多少天。(30分)
提示:
(1)1、3、5、7、8、10、12月份有31天,4、6、9、11月份有30天。
(2)2月闰年有29天,非闰年有28天。
(3)年份能被4整除且不能被100整除,或者能被400整除,则是闰年。
-
编写一个猜数游戏,该游戏会随机产生一个数字,用户可以随意输入一个数进行比较,在比较过程中,会不断提示用户输入的数是大了还是小了,直到用户输入的数等于随机数,程序终止。(30分)
-
编写程序,实现抓狐狸游戏。假设墙上有5个洞(编号为0、1,、2、3、4),其中一个洞里有狐狸,人类玩家输入洞口编号,如果洞里有狐狸就抓到了;如果洞里没有狐狸就第二天再来抓。但在第二天人类玩家来抓之前,狐狸会跳到隔壁的洞里。(50分)
-
6岁的小明上楼梯,一步只能迈1个或3个台阶,现在有段15个台阶的楼梯,要想上到15个台阶,编写程序计算小明共多少种上法。(50分)
-
聪明的尼姆游戏(人机对战)(50分)
尼姆游戏是个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。 在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一 半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。
在聪明模式中,计算机每次拿走足够多的物品使得堆的大小是 2 的幂次方减 1——也就 是 3,7,15,31 或 63。除了堆的大小已经是 2 的幂次方减 1,在其他情况下这样走都是符合游 戏规则的。在那种情况下,计算机就按游戏规则随机拿走一些。
编写程序,模拟聪明版本的尼姆游戏。