基本python代码中的错误

时间:2015-12-11 21:34:25

标签: python

所以我今天刚开始使用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会变成整数自动纠正吗?

期待任何帮助!!

3 个答案:

答案 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)返回一个整数,这是获得你想要的东西的正确方法。