我一直在尝试编写一个函数,该函数要求输入1-11之间的数字,并随机选择一个数字并在它们之间进行比较。 我不知道为什么无论我输入什么数字(等于或小于或大于),总是输入“您的数字较少”消息。
def loto():
_number = int(input("Enter any number between 1-10: "))
import random
for x in range(1):
print ("Python chose: " + str(random.randint(1,11)))
if ("_number" == "random"):
print ("You Won! :)")
if ("_number" < "random"):
print ("Your number is less")
if ("_number" > "random"):
print ("Your number is more")
else:
print ("You Lost :(")
loto()
我正在使用Python 3。
谢谢:)
答案 0 :(得分:3)
您的第一个问题是要比较字符串"_number"
和"random"
。因为"_number" < "random"
字符是#95,而_
字符是#114,所以r
ASCII地表示(或更确切地说,是Unicoderifically)。
如果要比较两个变量,则只引用变量,而不是碰巧与这些变量名称相同的字符串。
您的第二个问题是random
不是您的随机数,它是您用来创建该数字的模块。而且,更重要的是,您并没有在任何地方存储该数字,只是将其转换为字符串以打印出来然后将其丢弃。
您的第三个问题是您需要将这些if
更改为elif
。否则,将在You Lost
不正确时打印_number > random
消息,而不是仅在所有三个比较都不正确时打印。
将它们放在一起:
choice = random.randint(1,11)
for x in range(1):
print ("Python chose: " + str(choice))
if (_number == choice):
print ("You Won! :)")
elif (_number < choice):
print ("Your number is less")
elif (_number > choice):
print ("Your number is more")
else:
print ("You Lost :(")
当然,没有办法让您真正输掉比赛-这三个条件之一永远都是正确的。 (如果您使用的是复数或包含NaN的浮点数,则可以输入一个与所选数字没有任何可比性的数字,但您不能输入。)
我们在这里:
_number
而不是number
。for x in range(1):
循环没有任何用处,它仅循环一次,将x
设置为0(您从未使用过)。print
或使用字符串格式比将内容手动转换为字符串并将它们连接起来要简单。所以:
import random
def loto():
number = int(input("Enter any number between 1-10: "))
choice = random.randint(1, 11)
print("Python chose:", choice)
if number == choice:
print("You Won! :)")
elif number < choice:
print("Your number is less")
elif number > choice:
print("Your number is more")
else:
print("You Lost :(")
loto()
答案 1 :(得分:0)
您正在比较字符串而不是变量,需要删除引号,并且没有将随机数保存到变量中。 for循环仅重复一次,您可以将其删除。 像这样更新您的鳕鱼:
import random
def loto():
_number = int(input("Enter any number between 1-10: "))
rand_number = random.randint(1,11) # can't had the same name as random
if (_number == rand_number):
print ("You Won! :)")
elif (_number < rand_number):
print ("Your number is less")
elif (_number > rand_number):
print ("Your number is more")
else:
print ("You Lost :(")
loto()