Discuss / Python / 目前还不知道下面的代码错在什么地方,请指教。

目前还不知道下面的代码错在什么地方,请指教。

Topic source

danceaha

#1 Created at ... [Delete] [Delete and Lock User]

age=input(‘age=’) if age>=18: print('adult') else: print('teenager')

保存执行以后,首先显示age=,然后随便输入一个数字都是错误。TypeError: unorderable types: str() >= int()
是变量类型出了问题么,不是说Python是动态语言么?

你的Python版本是什么 ?

试试 age = int(input('age=')) 转换

斥_斥

#4 Created at ... [Delete] [Delete and Lock User]

报错说的是,你在用字符串类型和int类型比较,是错误的。

用 if int(age)>=18 就可以了。

至于动态类型的变量在这里不会自动转换的问题,我猜原理可能是这样的:

a = 123

这里会首先在内存中创建一个 123 的数值,接着创建变量 a 去指向 123。

a = 'abc'

这里会创建一个 '123' 的字符串,再用 a 去指向它。

因为变量和数据分开了,所以可以修改变量的类型。

动态类型说的是变量的类型可以修改,但是尽管如此,变量在同一个时刻下,只会有一个类型,而不是既可以为数字,也可以为字符串。

而这里,输入数据之后,可能就是在内存中创建一个字符串类型,然后用 age 变量去指向它,而不是指向一个数字。

所以这里的比较会出错。

我也是根据教程里的内容猜的,如果有不对的地方请您指教。


  • 1

Reply