到目前为止,我的情况是:
def lists():
global ClientList, highList, moderateList
ClientList = [ ["NeQua,High"],
["ImKol,Moderate"],
["YoTri,Moderate"],
["RoDen,High"],
["NaThe,Moderate"],
["ReWes,Moderate"],
["BrFre,High"],
["KaDat,High"],
["ViRil,High"],
["TrGeo,High"]]
highList = ["Running", "Swimming", "Aerobics", "Football", "Tennis"]
moderateList = ["Walking", "Hicking", "Cleaning", "Skateboarding", "Basketball"]
checkclient()
def checkclient():
global ClientList, highList, moderateList
answer = input("please enter the client ID: ")
answer2 = next(answer for answer in ClientList)
print(answer)
因此,我要输入特定的clientID,我要python在列表中找到客户机ID,打印强度级别(高或中等)的clientID,以便稍后我可以使用它来询问用户,根据强度是高还是中等,他们在不同的活动中花了多少分钟进行锻炼。你知道吗
此时,代码只打印列表的第一部分,而不管变量的答案是什么:[“NeQua,High”]。你知道吗
请告诉我如何解决这个问题,并尽量保持简单,因为我对Python比较陌生。你知道吗
谢谢 卡梅隆
改用字典(无需将其包装到只创建全局对象的函数中)。你知道吗
如果您只想对它们进行变异,则不需要将
list
之类的可变对象或字典指定为global
。如果希望对同一名称的本地分配也分配给全局名称,则只需要global
。不过,更重要的是,next()
只返回iterable中的下一个元素。因为list
是一个有序序列,所以用answer for answer in ClientList
生成的生成器将具有相同的顺序,并且该生成器的next()
(冗余,我可以添加)将始终是ClientList
的第一个元素,因为您一直在生成一个新的生成器。如果您想next()
继续整个过程,您必须先保存它。然而,这些在这里都不是必要的。只要查字典就行了。我在这里使用get()
,以避免用户试图访问不存在的用户时出错。你知道吗还要注意的是,在调用函数之前必须定义函数(顺序问题)。你知道吗
您可以按以下方式更改它:
next
返回iterable的第一个元素,因此总是得到ClientList
的第一个元素,因此需要过滤掉包含ID的元素相关问题 更多 >
编程相关推荐