【问题标题】:Why doesn't this code work? Guess the number game Python 3为什么这段代码不起作用?猜数字游戏 Python 3
【发布时间】:2015-06-09 07:04:29
【问题描述】:

所以我正在尝试编写一个代码,让计算机猜测用户想到的数字。我使用了 (x,y) 之间的范围,并为 x 和 y 指定了 0 和 10 的值。

计算机在这些之间选择一个随机数,然后询问该数字是否正确,如果不正确,则询问它是更高还是更低。

这里是棘手的部分,或者实际上正是我想要解决它的方式。如果用户说它是一个更大的数字,那么它将x设置为猜测数字,并循环回到猜测部分,并再次进行,如果它更低,则将y设置为猜测。

这是我为此编写的代码:

import random
x = 0
y = 10
guessing_loop = "y"
no_guess = 0

while guessing_loop == "y":
    guess = random.randint(x - 1,y + 1)
    no_guess = no_guess + 1
    print("The number I think you thought of is",guess,".")
    TF = input("Did you think of that number?")
    if TF in {"yes","y","yeah"}:
        print("Hell yeah, the number of guesses I had was:",no_guess,".")
    elif TF in{"no","nah","nay","n","nope"}:
        HL = input("Then was it a higher or a lower number?")
        if HL in {"higher","h"}:
            x = guess
        elif HL in {"lower","l"}:
            y = guess

input()

为什么这段代码不起作用?

这段代码根本没有按照我的预期去做,它不会在猜测之间寻找随机数,或者我什至不确定出了什么问题。

【问题讨论】:

  • 人们对此表示反对并投票关闭它;您需要付出更多努力来调试自己的代码:根据实际情况添加尽可能多的打印语句。
  • 非常感谢您的帮助,我非常感谢这些建议。我对编程和这个社区都是新手,我仍在努力适应,我不想惹恼任何人。从现在开始,我将在每个代码中添加更多打印语句。
  • 当然。欢迎使用 Python,也欢迎使用 SO。请简要浏览FAQ 并浏览其他一些 Python 初学者问题,以了解如何在此处提出问题以获得最佳响应的好技巧。此外,您可能会喜欢 CodeReview 进行一般代码审查,而不是具有明确客观答案的特定问题。
  • 另外,不要调用响应变量TF(变量名中不允许使用大写),例如调用它response 或 correct 什么的。 Python 有一个定义明确的样式指南,称为PEP-8。通常预计海报会跟随它。同样HL -> higher_lower.
  • @smci "为什么这段代码不起作用?"问题与代码审查无关。请阅读Be careful when recommending Code Review to askers

标签: python python-3.x


【解决方案1】:

几个问题:

  • 一旦找到正确的号码,您就不会跳出循环。
  • 使用显示其含义的变量名称,例如lower_bound 和 upper_bound 而不是 x 和 y。
  • 你想要random.randint(x + 1,y - 1),而不是random.randint(x - 1,y + 1)

【讨论】:

    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2023-03-20
    • 2016-06-21
    • 2013-10-09
    • 2013-03-22
    • 2010-09-18
    相关资源
    最近更新 更多