raw_input中的Int不起作用

时间:2015-01-01 23:49:16

标签: python

while True:
    a = raw_input("Your number: ")
    if a == int: # letters:
        if a > 0 and a % 3 == 0:
            print 'fizz'
        if a > 0 and a % 5 == 0:
            print 'buzz'
        if a > 0 and a % 3 != 0 and a % 5 != 0:
            print a
        if a <= 0:
            print 'bad value'
    else:
        print "Not integer, try again"`

如何使raw_input工作?我希望这个在用户输入是一个整数时运行游戏,而当它不是时再试一次。

2 个答案:

答案 0 :(得分:5)

raw_input()总是返回一个字符串。如果要将其设为int,请调用int()内置函数。如果无法转换字符串的内容,则会引发ValueError。如果愿意,您可以围绕它构建程序的逻辑。

答案 1 :(得分:2)

raw_input是一个字符串。您可以使用int将其转换为int。如果它不可转换,则返回错误。所以使用try ...除了处理错误。尽可能少地放入try ...部分是一个好主意,因为否则可能会意外地发现其他一些错误。然后将continue放入except部分,以跳回到开头。

while True:
    try:
        a= int(raw_input("Your number: "))
    except ValueError:
        print "not integer, try again"
        continue
    if a > 0:
        if a % 3 == 0:
            print 'fizz'
        if a % 5 == 0:
            print 'buzz'
        if a % 3 != 0 and a % 5 != 0:
            print a
    else:  #a<=0
            print 'bad value'