用python编写猜数字游戏,遇到一个问题总解决不了,求助!

希望能在游戏过程中添加一个按“q”就能退出游戏的功能,
但是又和程序中只能输入数字的代码冲突,
就是希望,在游戏开始后,任何时候想退出游戏,按“q”就可以退出游戏,
但又不会和游戏中的try-except代码想冲突。
本人初学者,怎么想也解决不了,希望能有前辈指导。

import random

name = input("你好! 你的名字是什么?\n");
print("欢迎来到猜数字游戏 " + name.title())
print("我有一个数字在1到100之间, 你能在7次内猜到它吗?")

random_num = random.randint(1, 100)
time = 0
while time <= 7:
    try:
        num = int(input("输入一个数字:\n"))
    except ValueError as e:
        print("请输入有效数字")
        continue
    if num == random_num:
        break
    elif num < random_num:
        print("你的数字小了!")
    else:
        print("你的数字大了!")
    time += 1
if time <= 7:
    print("恭喜你,你赢了^_^.")
else:
    print("别灰心,再来一次你可以的^_^")

2个回答

那也挺好处理的,在转 int 之前,先判断输入的是否是 q 字符,如果是的话,直接 break ;不是的话再尝试 int 转换,基本操作参考:

       try:
              receive=input("输入一个数字,如果想退出,按 q 字符:\n")
                if receive == "q":
                      break
                elif:
                    num = int(receive)
        except ValueError as e:
        print("请输入有效数字")
        continue

思路没问题,字符串比较是否相等我在 python 2 环境下没测通。

weixin_46608361
weixin_46608361 receive无法直接int,啊啊啊啊啊啊啊啊啊啊啊啊啊
7 个月之前 回复
weixin_45119682
镜子中的你 谢谢你的回答, 我刚才试了一下,出现几个问题,第一个是elif语法错误,我改成else后可以了。第二个问题是在游戏开始时,按q没有退出游戏。第三个问题是receive下面有红线,我就在循环外设置了一个变量,结果还是没有用。
12 个月之前 回复
import random
import os,sys
name = input("你好! 你的名字是什么?\n");
print("欢迎来到猜数字游戏 " + name.title())
print("我有一个数字在1到100之间, 你能在7次内猜到它吗?")

random_num = random.randint(1, 100)
time = 0
while time <= 7:
    num = input("输入一个数字:\n")
    if time <= 7:
        if num == 'q' or num == 'Q':
            print('欢迎下次再来!')
            sys.exit(0)
        elif not num.isdigit():
            print("请输入有效数字")
            continue
    else:
        print('满7次了哦')
    if int(num) == random_num:
        break
    elif int(num) < random_num:
        print("你的数字小了!")
    else:
        print("你的数字大了!")
    time += 1
if time <= 7:
    print("恭喜你,你赢了^_^.")
else:
    print("别灰心,再来一次你可以的^_^")

weixin_45119682
镜子中的你 非常感谢谢,完美解决。看来我考虑问题的思路有问题
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐