所以我今天刚开始做Python。尝试了一个基本程序,但我得到了一个错误“无法将int对象转换为str隐式”
userName = input('Please enter your name: ' )
age = input('Please enter your age: ')
factor = 2
finalAge = age + factor **ERRORS OUT ON THIS LINE**
multAge = age * factor
divAge = age / factor
print('In', factor, 'years you will be', finalAge, 'years old', userName )
print('Your age multiplied by', factor, 'is', multAge )
print('Your age divided by', factor, 'is', divAge )当我输入int(年龄)+因子,而不是年龄,它工作得很好。但是作者说python自动在输入变量时会检测到变量类型。因此,在这种情况下,当我输入age=20,那么年龄应该变成整数自动正确吗?
期待任何帮助!
发布于 2015-12-11 21:45:07
来自文档
然后,函数从输入中读取一行,将其转换为字符串(去掉尾随的换行符),并返回该字符串。
如您所见,python2.x中的input()函数通过转换给定的任何输入来返回字符串,这与python2.x中的raw_input()非常相似。
因此,age显然是一个字符串。
不能添加带有整数的字符串,因此出现了错误。
无法将int对象转换为str隐式
int(age)将age转换为整数,因此在您的情况下它可以工作。
你能做的是:
使用:
age = int(input('Please enter your age: '))显式地将输入转换为整数。
发布于 2015-12-11 21:47:08
您的问题是输入返回一个字符串(因为通常情况下,命令行的输入是文本)。您可以将其转换为int以删除错误,就像您所做的那样。
Python只会自动检测程序中变量的类型,如果它们还没有类型的话--它不会自动将类型化变量转换为不同类型。
发布于 2015-12-11 21:50:31
Python不知道您要做什么操作,只要'+‘操作符可以用来连接字符串和添加数字。
所以,它不知道你是否想
finalAge = int(age) + factor #finalAge is an integer或
finalAge = age + str(factor) #finalAge is a string您需要显式地转换您的变量,这样它就不会含糊了。
在您的示例中,int(age)返回一个整数,这是获取所需内容的正确方法。
https://stackoverflow.com/questions/34232929
复制相似问题