所以我今天刚开始使用Python。试过一个基本的程序,但我得到一个错误"无法将int对象转换为str implicity"
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 auto会检测变量类型。所以在这种情况下,当我输入age = 20时,age会变成整数自动纠正吗?
期待任何帮助!!
答案 0 :(得分:1)
来自doc
然后函数从输入中读取一行,将其转换为字符串(剥离尾部换行符),然后返回该行。
正如您所看到的,python 3+中的input()
函数通过转换您给出的任何输入返回一个字符串,非常类似于python 2.x中的raw_input()
。
所以,age
显然是一个字符串。
您无法添加带整数的字符串,因此错误。
无法将int对象转换为str implicity
int(age)
将age
转换为整数,因此适用于您的情况。
你能做什么:
使用:
age = int(input('Please enter your age: '))
显式地将输入转换为整数。
答案 1 :(得分:0)
您的问题是输入返回一个字符串(因为通常,命令行的输入是文本)。您可以将此转换为int以删除错误,就像您所做的那样。
Python只会自动检测程序中变量的类型,如果它们还没有类型 - 它不会自动将类型变量转换为不同的类型。
答案 2 :(得分:0)
Python不知道你要做什么操作,只要'+'运算符可以用来连接字符串和添加数字。
所以,它无法知道你是否正在尝试
finalAge = age + str(factor) #finalAge is a string
或
[XmlRoot("root")]
[Serializable]
public class Root
{
public Root()
{
eConnects = new List<eConnect>();
}
[XmlElement("eConnect")]
public List<eConnect> eConnects { get; set; }
}
[XmlRoot("eConnect")]
[Serializable]
public class eConnect
{
[XmlElement("Customer")]
public Customer customer { get; set; }
}
[XmlRoot("Customer")]
[Serializable]
public class Customer
{
[XmlElement("CUSTNMBR")]
public string CUSTNMBR { get; set; }
[XmlElement("CUSTNAME")]
public string CUSTNAME { get; set; }
}
您需要显式转换变量,使其不会模糊不清。
在你的情况下,int(age)返回一个整数,这是获得你想要的东西的正确方法。