Don';我不明白为什么我的输入在Python3中不起作用

Don';我不明白为什么我的输入在Python3中不起作用,python,python-3.x,Python,Python 3.x,我的目的是把两份清单做成字典格式,打印出20岁的名字。这是我的密码。我面临的问题是,当我从用户那里获得输入并将其传递给函数后,它就不会生效。我可以分别打印参数integer和age,效果很好。当它到达if函数时,它根本不打印名称。我尝试将整数硬编码为20-它可以工作,但这不是我想要的代码 NAMES = ['Alice', 'Bob', 'Cathy', 'Dan', 'Ed', 'Frank','Gary', 'Helen', 'Irene', 'Jack', 'Kelly', 'Larry'

我的目的是把两份清单做成字典格式,打印出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
函数。有没有其他方法可以不使用
项来扫描字典

您从用户处获得的输入是
string
类型,但是(正如您所观察到的)您需要
int
类型,因此只需在
getinput
返回之前对其进行转换:

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

年龄(int)永远不等于输入(string)。Python不会在类型之间执行任何类型的隐式转换。在
getinput()
中尝试
return int(age)
。您可以通过压缩两个列表来创建初始词典:
dict(zip(姓名、年龄))