目录
循环部分
题目1 [加强训练]
题干
设计"过7 游戏” 程序,即在 1- 99 之间的数字中,如果数字 包含 7 或者是 7 的倍数,则输出"过...", 否则输出 具体的数字.
训练目标
- while 循环的使用
- 运算符的使用
训练提示
- 如何取得 1-99 之间的数字
- 如何判断一个数是7的倍数
- 如何判断一个数是否包含 数字 7
参考方案
- 使用循环获取 1-99 之间的数字
- 判断一个数是否是 7 的倍数,即能否被 7 整除,在 python 可以使用
%
运算符 - 判断一个数字是否包含 7,可能个位是 7,也可能是十位数字是 7
- 判断个位 ,使用
num % 10 == 7
- 判断十位,使用
num // 10 == 7
- 判断个位 ,使用
操作步骤
- 使用循环得到 1 - 100 之间的数字
- 判断是否是 7 的倍数和包含 7
参考答案
i = 1
# 使用循环得到 1-100 之间的数字
while i < 100:
# 判断是否是 7 的倍数和包含 7 , 两者之间是或的关系,满足一个即输出过
if (i % 7 == 0) or (i % 10 == 7) or (i // 10 == 7):
print('过...')
else:
# 不是 7 的倍数,也没有包含 7,直接输出数字
print(i)
# 一个数字判断结束之后,改变 i 的值
i += 1
题目2 [加强训练]
题干
编写代码模拟用户登陆。要求:用户名为 python,密码 123456,如果输入正确,打印“欢迎光临”,程序结束,如果输入错误,提示用户输入错误并重新输入
训练目标
- while中的break的使用
训练提示
- 定义变量,用户名和密码采用什么格式存储
- 循环没有次数限制,那么我们使用while循环的时候条件是什么?
- 判断用户名和密码是否相同,我们的条件采用“or"还是“and”?
- break的作用是什么
参考方案
- 首先我们要自己定义用户名和密码保存
- 如果用户错误那么就需要重新循环,我们就需要采用什么方式进行循环?
- 提示用户输入信息
- 判断输入信息,根据不同的结果进行不同的执行方式
操作步骤
- 定义名户名和密码分别为name = "python",pwd = "123456"
- 使用循环,循环条件是True
- 提示用户输入用户名和密码
- 判断用户名和密码是否正确
- 如果正确跳出循环,不正确提示输入错误
参考答案
name = "python"
pwd = "123456"
while True:
user_name = input("请输入用户名:")
user_pwd = input("请输入密码:")
if user_name == name and user_pwd == pwd:
print("欢迎光临")
break
else:
print("用户输入错误!")
题目3 [加强训练]
题干
猜数字游戏:电脑产生(1-100)的随机数,用户进行猜测,直到猜中为止。
- 如果猜中,输出:恭喜你猜中了,数字是 xx。
- 如果猜的数字大,输出:猜测的数字太大了,继续加油
- 如果猜测的数字小,输出:猜测的数字有点小,再来一次
训练目标
- while 语法的使用
- break 的使用
- continue 的使用
训练提示
- 电脑产生随机数,Python 中使用什么函数呢?
- 如何接收用户输入的数据呢?接收到的数据类型是什么呢?
- 如何判断用户输入的数据和电脑产生的数据大小关系呢?
- 如何重复的进行判断呢?那些部分需要重复呢?
- 结果判断后,该怎么操作呢?
参考方案
- 使用
random.randint()
产生随机数 - input()\`接收用户输入的年龄,需要注意这里接收到的数据的数据类型是str;
- 判断数据大小,使用
==
、>
、<
。 - 重复即循环,循环可以使用
while
, 用户的输入和判断需要重复,电脑产生的随机不需要 - 如果相等,直接输出,并 break, 其余的情况输出相应的内容,并 continue。
操作步骤
- 通过
import random
导入随机数模块,使用random.randint()
产生随机数。 - input()\`接收用户输入的数字,并转换数据类型为int;
- 判断用户的输入和电脑产生的数字之间的关系,即:相等、大于和小于。
- 用户的输入和判断,输出重复执行的代码,需要放在循环中
参考答案
import random
# 电脑产生随机数
num = random.randint(1, 100)
while True:
# 提示让用户输入
my_num = int(input("请输入1-100之间的整数:"))
if my_num == num:
print("恭喜你猜中了,数字是%d" % num)
break
elif my_num > num:
print("猜测的数字太大了,继续加油")
continue # 本代码中可以不写
else:
print("猜测的数字有点小,再来一次")
题目 4 [加强训练]
题干
猜数字游戏:电脑产生(1-100)的随机数,用户进行猜测。
- 如果猜中,输出:恭喜你猜中了,数字是 xx,猜测了xx次。
- 如果猜的数字大,输出:猜测的数字太大了,继续加油
- 如果猜测的数字小,输出:猜测的数字有点小,再来一次
- 如果猜测5 次,还没有猜测出来,输出:太弱了,测试5次还没猜出来,不和你玩了
训练目标
- while 语法的使用
- break 的使用
- continue 的使用
- while else 的使用
训练提示
- 电脑产生随机数,Python 中使用什么函数呢?
- 如何接收用户输入的数据呢?接收到的数据类型是什么呢?
- 如何判断用户输入的数据和电脑产生的数据大小关系呢?
- 如何重复的进行判断呢?那些部分需要重复呢?
- 结果判断后,该怎么操作呢?
- 如何记录用户输入了几次?
- 循环没有被 break 结束,想要输出内容怎么操作?
参考方案
- 使用
random.randint()
产生随机数 - input()\`接收用户输入的年龄,需要注意这里接收到的数据的数据类型是str;
- 判断数据大小,使用
==
、>
、<
。 - 重复即循环,循环可以使用
while
, 用户的输入和判断需要重复,电脑产生的随机不需要 - 如果相等,直接输出,并 break, 其余的情况输出相应的内容,并 continue。
- 定义变量记录猜测的次数
- 达到猜测的次数后,没有猜到使用
while else
结构输出内容
操作步骤
- 通过
import random
导入随机数模块,使用random.randint()
产生随机数。 - input()\`接收用户输入的数字,并转换数据类型为int;
- 判断用户的输入和电脑产生的数字之间的关系,即:相等、大于和小于。
- 用户的输入和判断,输出重复执行的代码,需要放在循环中
- 书写 else 的内容
参考答案
import random
# 电脑产生随机数
num = random.randint(1, 100)
# 记录用户输入的次数
count = 0
while count < 5:
# 提示让用户输入
my_num = int(input("请输入1-100之间的整数:"))
count += 1
if my_num == num:
print("恭喜你猜中了,数字是%d, 猜测了%d次" % (num, count))
break
elif my_num > num:
print("猜测的数字太大了,继续加油")
continue # 本代码中可以不写
else:
print("猜测的数字有点小,再来一次")
else:
print("太弱了,猜测5次还没猜出来,不和你玩了")
题目 5 [加强训练]
题干
请用户输入一个数,使用while计算是否为素数(素数只能被 1 和本身整除)
训练目标
- while...else的使用
训练提示
- 什么是素数?
- 如何判断?
- 什么情况下执行“else”语句
参考方案
- 需要将输入的数字从2开始判断一直到本身
- 除了1和本身如果可以被整除,那么就不是素数,直接跳出循环
- 如果不能全部整除,那么执行else语句
操作步骤
- 接收一个变量“num”,并且转型为“int”类型,用于计算
- 定义变量 “i = 2”用来计算
- 使用while循环取值2~num
- 判断是否为素数,如果可以整除那么就不是素数,直接退出循环,如果不能整除,那么继续判断下一个数
- 如果全部判断完成则执行“else”输出当前输入的“num”是一个素数
参考答案
num = int(input("请输入一个数字:"))
if num == 1 or num == 0:
print("%d 不是素数也不是合数" % num )
else:
i = 2
while i < num:
if num % i == 0:
print("%d不是素数"%num)
break
i += 1
else:
print("%d是素数"%num)
题目 6 [加强训练]
题干
要求用户输入一个字符串,遍历当前字符串并打印,如果遇见“q”,则跳出循环。如果遇见“ ”(空格)则跳过当前输出。
训练目标
- for循环的基本使用
- break的作用
- continue的作用
训练提示
- for 循环的基本语法是什么
- for循环的作用是什么
- break的作用?
- continue的作用?
参考方案
- 使用for循环遍历当前字符串
- 判断每一字符是什么进行操作
操作步骤
- 提示用户输入字符串
- 便利当前字符串
- 如果是“q”则退出,如果是“ ”(空格)则跳过本次循环
- 打印字符
参考答案
input_str = input("请输入一个字符串:")
for i in input_str:
if i == "q":
break
elif i == " ":
continue
print(i)
题目 7 [加强训练]
题干
使用for循环计算1 - 100 之间的累加和
训练目标
range()的使用
训练提示
- range()方法的作用
- for循环如何使用
- 累加重新辅助
参考方案
- 使用for寻遍遍历0~100
- 进行累加重新赋值
操作步骤
- 定义变量sum,初始化sum=0
- 遍历0~100的所有的值
- 进行累加和
参考答案
sum = 0
for i in range(101):
sum += i
print(sum)
题目 8 [加强训练]
题干
请用户输入一个数,使用for循环计算是否为素数(素数只能被 1 和本身整除)
训练目标
for...else是使用
训练提示
- range生成2~num的可迭代对象
- for...else的使用场景,什么时候执行else
参考方案
- 使用for循环
- range生成2~num的可迭代对象
- 判断是否为素数
操作步骤
- 定义变量,接收一个数字
- 定义初始循环的值为2
- 判断是否是素数如果可以整除那么就不是素数,直接退出循环,如果不能整除,那么继续判断下一个数
- 如果全部判断完成则执行“else”输出当前输入的“num”是一个素数
参考答案
num = int(input("请输入一个数字:"))
if num == 1 or num == 0:
print("%d 不是素数也不是合数" % num )
else:
for i in range(2,num):
if num % i == 0:
print("%d不是素数" % num)
break
else:
print("%d是素数"%num)
题目 9 [综合训练]
题干
分别使用for循环和while循环,求100~200的所有素数
训练目标
- 循环嵌套的使用
- if条件判断
- while...else for...else的使用场景
训练提示
- 题目8和题目5分别使用for和while循环判断一个值是否为素数
- 增加外层循环
参考方案
- 采用循环嵌套形式判断每一个值
- 参考题目10和题目7
操作步骤
- 确定循环次数
- 内层循环判断里面的每一个数是否为素数
- 如果不是break跳出本次循环,如果是那么都判断完成后执行else语句
- while循环注意自增问题
参考答案
# 定义初始值
num = 100
# 外层循环控制100 到 200 的值
while num <= 200:
# 判断一个数据是否是素数,从2开始整除到数据值-1为止,如果可以整除,则不是素数
i = 2
# 内层循环控制除数
while i < num:
# 判断是否可以被整除
if num % i == 0:
# 可以被整除,则不是素数
print("%d不是素数" % num)
# 装置内层循环,不需要再判断
break
# 改变i 的值
i = i + 1
else:
# 内层循环结束,没有被break终止,则说明是素数
print("%d是素数" % num)
# 内层循环结束,当前数据判断结束,继续下一个数据判断
num = num + 1
# 外层循环控制100 到 200 的值
for num in range(100, 201):
# 判断一个数据是否是素数,从2开始整除到数据值-1为止,如果可以整除,则不是素数
# 内层循环控制除数
for i in range(2, num):
# 判断是否可以被整除
if num % i == 0:
# 可以被整除,则不是素数
print("%d不是素数" % num)
# 装置内层循环,不需要再判断
break
else:
# 内层循环结束,没有被break终止,则说明是素数
print("%d是素数" % num)