猜数字游戏。在程序中预设一个0-9之间的整数,
让用户通过键盘输入所猜的数,
如果大于预设的数,显示“你猜的数字大于正确答案”:
小于预设的数,显示“你猜的数字小于正确答案”,
如此循环,直至猜中该数,显示“你猜了N次,猜对了,真厉害”,
其中N是用户输入数字的次数。
# 1. guess_game.py 自己写的
answer = 1
times = 1
guess_int = 100
while (not answer == guess_int):
# 把判断int和正确区域放在里边,以便于刷新guess_int
is_int = False
is_correct_area = False
guess = input("请猜一个0-9之间的整数:")
# 判断是否为0-9之间的数字
while (not is_correct_area):
# 利用try-except将字符型转换为int型
while (not is_int):
try:
guess_int = int(guess)
is_int = True
except ValueError:
guess = input("输入无效,不是一个整数,请再次输入:")
if guess_int < 0 or guess_int > 9:
guess = input("输入无效,不是0-9之间的整数,请再次输入:")
is_int = False
else:
is_correct_area = True
print(guess_int)
# 进行比较大小
# times作为记的次数
times += 1
if guess_int < answer:
print("你猜的数字小于正确答案")
elif guess_int == answer:
print("你猜了{}次,猜对了,真厉害".format(times-1))
else:
print("你猜的数字大于正确答案")
if answer == guess_int:
break
请猜一个0-9之间的整数:你好
输入无效,不是一个整数,请再次输入:10
输入无效,不是0-9之间的整数,请再次输入:8
8
你猜的数字大于正确答案
请猜一个0-9之间的整数:3
3
你猜的数字大于正确答案
请猜一个0-9之间的整数:0
0
你猜的数字小于正确答案
请猜一个0-9之间的整数:1
1
你猜了4次,猜对了,真厉害
请按任意键继续. . .
while True
就可以(not answer == guess_int
是按照文字意思但是计算机语言就是可以简写)# 3. guess_game.py 第二次写
answer = 3
N = 0
while True:
try:
guess_int = int(input("请输入0-9之间的数字:"))
if 0 <= guess_int <= 9:
N += 1
# 注意N要放在合格变量的里边
if guess_int < answer:
print("你猜的数字小于正确答案")
elif guess_int == answer:
print("你猜了{}次,猜对了,真厉害".format(N))
break
else:
print("你猜的数字大于正确答案")
else:
print("输入的范围错误请重新输入。")
except ValueError:
print("输入格式错误请再次输入。")
请输入0-9之间的数字:你好
输入格式错误请再次输入。
请输入0-9之间的数字:10
输入的范围错误请重新输入。
请输入0-9之间的数字:8
你猜的数字大于正确答案
请输入0-9之间的数字:1
你猜的数字小于正确答案
请输入0-9之间的数字:7
你猜的数字大于正确答案
请输入0-9之间的数字:5
你猜的数字大于正确答案
请输入0-9之间的数字:4
你猜的数字大于正确答案
请输入0-9之间的数字:3
你猜了7次,猜对了,真厉害
请按任意键继续. . .
# 0.guess_game.py chatgpt
answer = 5 # 你预设的正确答案
times = 0
while True:
guess = input("请猜一个0-9之间的整数:")
try:
guess_int = int(guess)
if 0 <= guess_int <= 9:
times += 1 # 统计猜的次数
if guess_int < answer:
print("你猜的数字小于正确答案")
elif guess_int > answer:
print("你猜的数字大于正确答案")
else:
print(f"你猜了{times}次,猜对了,真厉害")
break
else:
print("输入无效,不是0-9之间的整数,请再次输入")
except ValueError:
print("输入无效,不是一个整数,请再次输入")
请猜一个0-9之间的整数:你好
输入无效,不是一个整数,请再次输入
请猜一个0-9之间的整数:10
输入无效,不是0-9之间的整数,请再次输入
请猜一个0-9之间的整数:5
你猜了2次,猜对了,真厉害
请按任意键继续. . .
猜数字游戏续。
改编1中的猜数字游戏,
让计算机能够随机产生一个预设数字,
范围在0-100之间,其他游戏规则不变。
# 1. guess_game.py 自己写的
import random
answer = random.randint(0, 100)
N = 0
while True:
try:
guess_int = int(input("请输入0-100之间的数字:"))
if 0 <= guess_int <= 100:
N += 1
# 注意N要放在合格变量的里边
if guess_int < answer:
print("你猜的数字小于正确答案")
elif guess_int == answer:
print("你猜了{}次,猜对了,真厉害".format(N))
break
else:
print("你猜的数字大于正确答案")
else:
print("输入的范围错误请重新输入。")
except ValueError:
print("输入格式错误请再次输入。")
请输入0-100之间的数字:你好
输入格式错误请再次输入。
请输入0-100之间的数字:110
输入的范围错误请重新输入。
请输入0-100之间的数字:50
你猜的数字小于正确答案
请输入0-100之间的数字:75
你猜的数字小于正确答案
请输入0-100之间的数字:85
你猜的数字大于正确答案
请输入0-100之间的数字:80
你猜的数字小于正确答案
请输入0-100之间的数字:83
你猜了6次,猜对了,真厉害
请按任意键继续. . .
猜数字游戏再续。
用变量maxtimes设置允许猜数字的最大次数
(比如最多只允许猜6次maxtimes=6)
并在猜错后提示还有几次机会。
用for循环改写整个程序,并提交。
(提示,猜对后可使用break跳出循环)
# 1. guess_game.py 自己写的(while循环增加判断功能的代码)
import random
answer = random.randint(0, 100)
N = 0
maxtimes = 6
while True: # 改为for循环,但是由于for循环一旦开始就无法改变循环次数,需要进行改变,要有前提条件猜对了才算次数
try:
guess_int = int(input("请输入0-100之间的数字:"))
if 0 <= guess_int <= 100:
N += 1
if guess_int < answer:
if N == maxtimes: # 由于不想增加while循环的次数所以在这里增加判断break的条件,也可以在下一次循环的时候增加判定break的条件,会减少几行代码
print("次数用尽了,最终答案是{}".format(answer))
break
else:
print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))
elif guess_int == answer:
print("你猜了{}次,猜对了,真厉害".format(N))
break
else:
if N == maxtimes:
print("次数用尽了,最终答案是{}".format(answer))
break
else:
print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))
else:
print("输入的范围错误请重新输入。")
except ValueError:
print("输入格式错误请再次输入。")
请输入0-100之间的数字:你好
输入格式错误请再次输入。
请输入0-100之间的数字:10000
输入的范围错误请重新输入。
请输入0-100之间的数字:10
你猜的数字小于正确答案,你还有5次机会。
请输入0-100之间的数字:50
你猜的数字小于正确答案,你还有4次机会。
请输入0-100之间的数字:30
你猜的数字小于正确答案,你还有3次机会。
请输入0-100之间的数字:303
输入的范围错误请重新输入。
请输入0-100之间的数字:2
你猜的数字小于正确答案,你还有2次机会。
请输入0-100之间的数字:1
你猜的数字小于正确答案,你还有1次机会。
请输入0-100之间的数字:0
次数用尽了,最终答案是92
请按任意键继续. . .
# 2. guess_game.py for循环没有检查格式的代码
import random
answer = random.randint(0, 100)
N = 0
maxtimes = 6
for i in range(maxtimes):
guess = int(input("请输入0-100之间的数字:"))
N += 1
if guess < answer:
print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))
elif guess == answer:
print("你猜了{}次,猜对了,真厉害".format(N))
else:
print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))
if N == maxtimes and guess != answer: # 代码少但是输出格式不美化
print("次数用尽了,最终答案是{}".format(answer))
请输入0-100之间的数字:2
你猜的数字小于正确答案,你还有5次机会。
请输入0-100之间的数字:3
你猜的数字小于正确答案,你还有4次机会。
请输入0-100之间的数字:4
你猜的数字小于正确答案,你还有3次机会。
请输入0-100之间的数字:5
你猜的数字小于正确答案,你还有2次机会。
请输入0-100之间的数字:6
你猜的数字小于正确答案,你还有1次机会。
请输入0-100之间的数字:7
你猜的数字小于正确答案,你还有0次机会。
次数用尽了,最终答案是23
请按任意键继续. . .
猜数字游戏之续了又续。
为了增加代码的复用性,
将猜数字游戏封装为函数GuessSecret(maxtimes),
将允许猜数字的最大次数maxtimes作为参数。
在调用GuessSecret时允许用户自己设置maxtimes,美化程序的输出界面。
# 1. guess_game.py 自己写的
import random
def GuessSecret(maxtimes):
answer = random.randint(0, 100)
N = 0
while True: # 改为for循环,但是由于for循环一旦开始就无法改变循环次数,需要进行改变,要有前提条件猜对了才算次数
try:
guess_int = int(input("请输入0-100之间的数字:"))
if 0 <= guess_int <= 100:
N += 1
if guess_int < answer:
if N == maxtimes: # 由于不想增加while循环的次数所以在这里增加判断break的条件,也可以在下一次循环的时候增加判定break的条件,会减少几行代码
print("次数用尽了,最终答案是{}".format(answer))
break
else:
print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))
elif guess_int == answer:
print("你猜了{}次,猜对了,真厉害".format(N))
break
else:
if N == maxtimes:
print("次数用尽了,最终答案是{}".format(answer))
break
else:
print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))
else:
print("输入的范围错误请重新输入。")
except ValueError:
print("输入格式错误请再次输入。")
maxtimes = int(input("请输入允许猜的最大次数:"))
GuessSecret(maxtimes)
流程图过两天更新