不明白为什么我的输入不会影响Python 3

时间:2016-07-25 09:27:56

标签: python python-3.x

我的目的是将两个列表转换为字典格式并打印出年龄为20岁的名称。这是我的代码。我面临的问题是,在我从用户获得输入并且它传递给函数后,它不会生效。我可以分别打印参数integer和age - 它工作正常。当它到达if函数时,它根本不打印名称。我试图将整数硬编码为20 - 它可以工作,但这不是我想要的代码。

NAMES = ['Alice', 'Bob', 'Cathy', 'Dan', 'Ed', 'Frank','Gary', 'Helen', 'Irene', 'Jack', 'Kelly', 'Larry']
AGES = [20, 21, 18, 18, 19, 20, 20, 19, 19, 19, 22, 19]
list1 = {}

def getinput():
    age=input('Please enter your age')
    return age

def changedict():
    for x in range(len(NAMES)):
        list1[NAMES[x]]=AGES[x]     

def get_names(integer):
    for name, age in list1.items():
        if age == integer:
            print(name)

changedict()
para=getinput()
get_names(para)

如果上面的代码有任何改进,比如更简化的版本,请对其进行评论。我还想了解items函数的更多信息。有没有其他方法可以在不使用items的情况下扫描字典?

1 个答案:

答案 0 :(得分:2)

您从用户那里获得的输入是string类型,但是(如您所见)您需要int类型,因此只需在getinput返回之前进行转换:

def getinput():
    age = input('Please enter your age')
    return int(age)