【问题标题】:What is wrong with my python code? [duplicate]我的 python 代码有什么问题? [复制]
【发布时间】:2014-11-04 20:03:10
【问题描述】:

我正在尝试用 python 做一个猜谜游戏。

from random import randint
print "\nI'm thinking of a number, you have to guess what it is.\n"

num = randint(1,100)
guess = 0

while guess != num:
    guess = raw_input("Guess the number \n")
    if guess < num:
        print "Guess higher next time \n"
    elif guess > num:
        print "Guess lower next time \n"
    elif guess == num:
        print "That's correct \n"

问题是无论我输入什么数字,我每次都会得到“猜一个较低的数字”。那么有什么问题呢?

【问题讨论】:

  • 您必须将guess 转换为int: guess = int(raw_input("Guess the number n"))。否则,您总是将字符串与 int 进行比较,并且字符串将始终评估为“大于”。
  • 至于为什么一个字符串大于任何数字,看这里stackoverflow.com/a/3270689/3557327
  • 附带说明,这是 Python 3.x 中许多更好的事情之一。如果你把这件事搞砸了,而不是以对你作为代码的作者/调试者毫无意义的方式取得成功,它会给你一个很好的异常,告诉你到底哪里出了问题。

标签: python python-2.7


【解决方案1】:

有了这个:

guess = raw_input("Guess the number \n")

guess 是字符串,而不是数字。

你可以这样做:

guess = int(raw_input("Guess the number \n"))

得到一个整数。

【讨论】:

  • 如果输入错误会导致程序崩溃......但是+1都是一样的,因为那真的超出了问题的范围
  • @JoranBeasley:它不会“崩溃”,它会引发ValueError 说invalid literal for int() with base 10: 'your program sucks and you suck'。是让用户阅读,还是将其包装在 try/except 中,取决于您尝试为哪种用例制作哪种程序。
  • (PS,我并不是说你的用户总是会尝试输入'your program sucks and you suck',如果你给他们一个提示,但我的用户通常会这样做。:))
  • 好吧,公平点......给出示例代码和这个答案一般来说,它会导致他的代码崩溃......:P......但就像我说的那样,这可能超出了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 2018-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多