您可以使用字典:
#!/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
输出是什么?如果我问“约翰”这个名字,你只是给“约翰”回来? – Chris
“你的学生约翰是23岁” – user3495724
什么类型的对象是'John'和'Sam'。发布这些不是字符串,所以他们是某种'人'对象?如果他们是一个对象,他们可能会有一个属性来存储年龄,所以你可以拥有一个“Person”对象列表,而不是有两个并行列表。 – mhawke