python - 不正确的 if-else 语句
问题描述
我一直在尝试编写一个函数,该函数将要求输入 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。
谢谢:)
解决方案
您的第一个问题是您正在比较字符串"_number"
和"random"
. ASCIIbetically(或者,更确切地说,Unicoderifically),"_number" < "random"
因为_
字符是#95,r
字符是#114。
如果要比较两个变量,只需引用变量,而不是恰好与这些变量名称相同的字符串。
您的第二个问题random
不是您的随机数,而是您用来创建该数字的模块。而且,更严重的是,您并没有将该数字存储在任何地方——您只是将其转换为字符串以将其打印出来,然后将其丢弃。
您的第三个问题是您需要将那些if
s 更改为elif
s。否则,只要不为真,而不是仅当所有三个比较都不为真时,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()
推荐阅读
- php - laravel eloquent 负小数的问题
- c# - c#程序中类结构接口中的无效标记'='
- php - Laravel 按钮不是没有提交
- c# - 无法让 C# SslStream 与我的 X509 证书一起使用
- google-bigquery - BigQuery:计费和配额
- haxe - How can I keep the Generics type in the C# code output from Haxe?
- python - 使用power bi平台进行python可视化
- spring - How to populate data in OrderEntryData
- python - Numpy: Efficient mapping of single values in np arrays
- scip - 如何在 SCIP 中访问节点上的域信息?