2016-07-25 53 views
-1

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

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的情况下通过字典进行扫描?

+2

年龄(INT)是永远等于输入(串)。 Python不会在类型之间执行任何类型的隐式转换。尝试在'getinput()'中返回int(年龄)'。 –

+2

你可以通过将你的两个列表压缩在一起来创建你的初始词典: 'dict(zip(NAMES,AGES))' –

回答

2

您从用户那里得到的输入是string类型,但是(如你观察到的),你需要一个int类型,所以在getinput回报只是把它转换:

def getinput(): 
    age = input('Please enter your age') 
    return int(age) 
相关问题