我让猜测者有五次机会来猜这个随机数字.每次猜测者做错了,我都想打印出来:

Nice try, guess again (try bigger), you get {x} chance left.

x是倒计时,所以第一个错误的猜测会说你还有4次机会,然后又一次错误,还有3次机会,以此类推.我怎么能做到这一点?或者,如何在x上添加一个循环.

所以这是我不成功的代码:

import random

secret_num = random.randint(1, 20)

print('Guess the number from 1-20 (you get 5 chances)')

for guess_chance in range(1, 6):
    guess = int(input("Input guess number: "))

    if guess < secret_num:
        x = 5
        x -= 1
        print(f'Nice try, guess again (try bigger), you get {x} chance left.')

    elif guess > secret_num:
        x = 5
        x -= 1
        print(f'Nice try, guess again (try smaller), you get {x} chance left.')

    else:
        break

if guess == secret_num:
    print('Congratz, you guess correctly in' + str(guess_chance) + 'times.')
else:
    print('Nope, the correct number is ' + str(secret_num) + '.')

推荐答案

您需要在之前对guess_chance in range...执行x = 5),并将其从循环中删除.

print('Guess the number from 1-20 (you get 5 chances)')

x = 5

for guess_chance in range(1, 6):
    guess = int(input("Input guess number: "))

    if guess < secret_num:
        x -= 1
        print(f'Nice try, guess again (try bigger), you get {x} chance left.')

    elif guess > secret_num:
        x -= 1
        print(f'Nice try, guess again (try smaller), you get {x} chance left.')

    else:
        break

否则,每猜5次,然后减go 1次.它大概总是显示4次try ...

有很多其他方法可以解决这个问题.我只选了对你的代码改动最小的那个

当结合你的射程时,这是有点多余的

x = 6 - guess_chance个就行了

只需反向迭代范围即可

Python相关问答推荐

将整组数组拆分为最小值与最大值之和的子数组

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

无法使用requests或Selenium抓取一个href链接

有没有一种方法可以从python的pussompy比较结果中提取文本?

创建可序列化数据模型的最佳方法

实现神经网络代码时的TypeError

在matplotlib中删除子图之间的间隙_mosaic

pandas:对多级列框架的列进行排序/重新排序

以逻辑方式获取自己的pyproject.toml依赖项

提高算法效率的策略?

将一个双框爆炸到另一个双框的范围内

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

如何使用pytest在traceback中找到特定的异常

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

操作布尔值的Series时出现索引问题

FileNotFoundError:[WinError 2]系统找不到指定的文件:在os.listdir中查找扩展名

如何在表单中添加管理员风格的输入(PDF)

迭代工具组合不会输出大于3的序列

生产者/消费者-Queue.get by list

如何有效地计算所有输出相对于参数的梯度?