不正确的if-else语句

时间:2018-09-02 17:49:57

标签: python python-3.x if-statement

我一直在尝试编写一个函数,该函数要求输入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。

谢谢:)

2 个答案:

答案 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(您从未使用过)。
  • 您不需要在条件周围加上括号。
  • 除非在特殊情况下需要惰性加载之类的特殊情况,否则不应在函数中间导入模块。
  • 您应该遵循PEP 8风格,或者至少选择要遵循的一致风格。
  • 仅将多个参数传递给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()