2016-03-03 41 views
0

我希望从列表中绘制东西并将其打印出来,就像数据库一样。我如何去打印用户所要求的东西?查找并打印列表中的项目?

name = [John, Sam] 
ages = [23, 7] 
answer = input("Search by (n)ame or (a)ge") 
if answer == "n": 
    askName= input("what name?") 
    # ????? 
elif answer == "a": 
    askAge = input("what age") 
else start() 
+0

输出是什么?如果我问“约翰”这个名字,你只是给“约翰”回来? – Chris

+0

“你的学生约翰是23岁” – user3495724

+0

什么类型的对象是'John'和'Sam'。发布这些不是字符串,所以他们是某种'人'对象?如果他们是一个对象,他们可能会有一个属性来存储年龄,所以你可以拥有一个“Person”对象列表,而不是有两个并行列表。 – mhawke

回答

3
name = ['John', 'Sam'] 
ages = [23, 7] 
answer = input("Search by (n)ame or (a)ge") 
if answer == "n": 
    askName= input("what name?") 
    if askName in name: 
     print(ages[name.index(askName)]) 
elif answer == "a": 
    askAge = input("what age") 
    if askAge in ages: 
     print(name[ages.index(askAge)]) 

随着if askName in name您可以检查是否askNamename列表。如果是,则可以使用index()获取索引,并使用它访问ages列表中的值。获得一个年龄的名字的方式是一样的。

+0

应该指出,这将返回指定值第一次出现的索引。如果学生的姓名/年龄相同,则可能会产生错误的输出。 – IanAuld

+0

@IanAuld你说得对。但是如果有同名学生/年龄的学生,没有办法找出谁是谁。在这种情况下,你需要某种身份证件。 –

+0

是的。它可以通过循环手册完成,以返回所有匹配。 – IanAuld

0

您可以使用字典:

#!/usr/bin/python 
userlist = [ 
    {'name':'John', 'age':23}, 
    {'name':'Sam', 'age':7}, 
    {'name':'Anna', 'age':7}, 
    {'name':'John', 'age':10}, 
] 

answer = input("Search by (n)ame or (a)ge") 
if answer == "n": 
    askName= input("what name?") 
    for i in userlist: 
     if i['name'] == askName: 
      print('name: '+askName+', age: '+str(i['age'])) 
elif answer == "a": 
    askAge = input("what age") 
    for i in userlist: 
     if i['age'] == int(askAge): 
      print('name: '+str(i['name'])+', age: '+askAge) 

学生可以有相同的名字和年龄以便输出将是这样的:

Search by (n)ame or (a)gen 
what name?Sam 
name: Sam, age: 7 

Search by (n)ame or (a)gea 
what age7 
name: Sam, age: 7 
name: Anna, age: 7 

为了避免这种情况,你可以通过ID选择学生:

#!/usr/bin/python 
userlist = [ 
    {'name':'John', 'age':23}, 
    {'name':'Sam', 'age':7}, 
    {'name':'Anna', 'age':7}, 
    {'name':'John', 'age':10}, 
] 

answer = input("Search by (n)ame or (a)ge or (i)d\n") 
if answer == "n": 
    askName= input("what name?\n") 
    for i in userlist: 
     if i['name'] == askName: 
      print('name: '+askName+', age: '+str(i['age'])) 
elif answer == "a": 
    askAge = input("what age?\n") 
    for i in userlist: 
     if i['age'] == int(askAge): 
      print('name: '+str(i['name'])+', age: '+askAge) 
elif answer == "i": 
    askId = input("what id?\n") 
    print('id: ' + askId + ',name: '+str(userlist[int(askId)]['name'])+', age: '+str(userlist[int(askId)]['age'])) 

输出:

Search by (n)ame or (a)ge or (i)d 
i 
what id? 
1 
id: 1,name: Sam, age: 7