2016-07-25 55 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) 
相關問題