Python If语句在我的程序中不起作用 导入时间 name=输入(“输入您的姓名:”) currentTime=int(time.strftime('%H')) 如果currentTime12: 打印(“下午好,”+姓名) 其他: 打印(“晚上好,”+姓名) def main(): 随机输入 guess:int=input('输入一个介于1和2之间的数字:') 如果代码中的guess

Python If语句在我的程序中不起作用 导入时间 name=输入(“输入您的姓名:”) currentTime=int(time.strftime('%H')) 如果currentTime12: 打印(“下午好,”+姓名) 其他: 打印(“晚上好,”+姓名) def main(): 随机输入 guess:int=input('输入一个介于1和2之间的数字:') 如果代码中的guess,python,if-statement,python-3.7,Python,If Statement,Python 3.7,guess类型为str,请阅读以下文档: 然后,该函数从输入中读取一行,将其转换为字符串 (剥离尾随换行符),并返回 当您使用guess:int时,您使用的是一个。文件说: Python运行时不强制函数和变量类型 注释。它们可以由第三方工具使用,例如type 方格、方格、短绒等 在if中,您试图将int与str进行比较。在Python控制台中运行此命令以查看: print(1 == '1') # --> False print(1 == 1) # --> True 因此,您需要做的

guess
类型为
str
,请阅读以下文档:

然后,该函数从输入中读取一行,将其转换为字符串 (剥离尾随换行符),并返回

当您使用
guess:int
时,您使用的是一个。文件说:

Python运行时不强制函数和变量类型 注释。它们可以由第三方工具使用,例如type 方格、方格、短绒等

if
中,您试图将
int
str
进行比较。在Python控制台中运行此命令以查看:

print(1 == '1') # --> False
print(1 == 1) # --> True
因此,您需要做的是显式地将其转换为
int

guess = int(input('Enter a number the between 1 and 2 :'))
并将第一个
如果
更改为:

if guess <= 2:
    ...

如果您的
guess
是从
input()
返回的字符串,但是您的
num
是从
randint()
返回的
int
。你的意思是:
guess=int(输入('输入一个介于1和2之间的数字:')
input
返回一个字符串,因此
guess
是一个字符串。将字符串与整数进行比较(
如果num==guess:
)将永远不会得到
True
。使用
guess:int
您给出了一个类型提示,但这只是对程序员或工具的提示。您必须自己将字符串转换为整数。首先,在“guess”变量处传递一个字符串,而不是int。同样的事情也发生在“num”上。另外,“@dimosgeo
num
是通过调用
random.randint
创建的,因此一个是整数。顺便说一句,python中没有
强制转换
。您的示例是一个转换。@quamrana谢谢!我更改了它