Python-我的代码可以工作,如果我使用raw_input但不是如果我使用随机数

时间:2013-12-17 13:04:35

标签: python random

基本上我制作了一个应该生成随机数的程序,而不是猜测数字。

问题是:如果我使用

N = raw_input() 

它有效,但如果我使用

N= randrange(1,100)

N=3

它不起作用!即使我插入正确的数字,他总是打印“数字应该更大”! 有任何想法吗?谢谢! 这是完整的代码:

from random import randrange
N = raw_input() #randrange(1,100)
tentavivi=10
vittoria=False
for i in range(0,tentavivi):
    n = raw_input("Insert the number")
    if n==N:
        vittoria=True
        break
    elif n<N:
        print("the number is bigger")
    else:
        print("the number is smaller")
if vittoria:
    print("Bravo!")
else:
    print("no! bad boy!")

3 个答案:

答案 0 :(得分:3)

您需要将输入转换为数字

N = int(raw_input())
...
...
n = int(raw_input("Insert the number"))

答案 1 :(得分:3)

raw_input()返回字符串,而不是整数。比较整数和字符串永远不会产生True

你必须使用相同的类型进行比较;要么先将随机数转换为字符串,要么将所有raw_input()结果转换为整数。

使用:

N = str(randrange(1, 100))

您将Nraw_input()结果进行比较的其他行会对字符串进行比较。

这与JavaScript或Perl等语言不同,字符串中的数字与其他数字相比会自动强制转换为数字。总的来说,Python会尽量避免像这样进行隐式转换。 (例外是在Python 2中组合unicodestr值的操作,这是Python 3中纠正的错误。)

答案 2 :(得分:2)

如果您在N=raw_input()中输入3,则N将是'3',这是一个字符串,而不是3,这是一个int。 '3'不等于3。您可以使用int(N)将字符串转换为整数,int('3')将等于3