Python 确定输入列表中的元素是否在其他列表中
我在这方面真的很新,我正在尝试完成这个简单的程序,它应该打印一个产品列表,并要求用户选择他们想要的产品 如果他们输入的产品在原始产品列表中,则应继续,如果不在,则应打印一条消息,说明其无效,并提示用户再次选择 这是我的一些代码 我的产品清单:Python 确定输入列表中的元素是否在其他列表中,python,list,for-loop,if-statement,break,Python,List,For Loop,If Statement,Break,我在这方面真的很新,我正在尝试完成这个简单的程序,它应该打印一个产品列表,并要求用户选择他们想要的产品 如果他们输入的产品在原始产品列表中,则应继续,如果不在,则应打印一条消息,说明其无效,并提示用户再次选择 这是我的一些代码 我的产品清单: Medicina = ("jarabe", "ampolleta", "capsulas") Electronica = ("computador", "scanne
Medicina = ("jarabe", "ampolleta", "capsulas")
Electronica = ("computador", "scanner", "impresora")
Ropa = ("vestido", "pantalon", "blusa")
while True:
Products = input ("ingrese el nombre de sus productos separados solo por una coma: ").split(",")
print (Products)
for x in Products:
if x in Medicina:
break
if x in Electronica:
break
if x in Ropa:
break
print ("ingrese productos validos")
print (Products)
问题是,无论我输入什么产品,它总是将其标记为无效产品。我将感谢任何帮助
谢谢
提示:始终尝试尽可能少地使用for/while循环或if语句,并保持代码简短,这样做会使代码运行速度变慢并充满bug
注意:你仍然可以把它做得更短更好,但我把它作为一个挑战留给你,让你玩得开心
第二个注意事项:很抱歉,我不理解您使用的语言,所以我只是复制了一个字符串并粘贴了它您可以使用加法将列表组合在一起,然后使用中的同时检查所有列表
Medicina = ("jarabe", "ampolleta", "capsulas")
Electronica = ("computador", "scanner", "impresora")
Ropa = ("vestido", "pantalon", "blusa")
def invalid_products(Products):
for product in Products:
if product not in Medicina + Electronica + Ropa:
print("Enter valid Product")
return True
return False
Products =[]
while(invalid_products(Products) or not Products):
Products = input ("ingrese el nombre de sus productos separados solo por una coma: ").split(",")
此外,函数可以很好地“返回值”并同时停止运行循环
Medicina = ("jarabe", "ampolleta", "capsulas")
Electronica = ("computador", "scanner", "impresora")
Ropa = ("vestido", "pantalon", "blusa")
def invalid_products(Products):
for product in Products:
if product not in Medicina + Electronica + Ropa:
print("Enter valid Product")
return True
return False
Products =[]
while(invalid_products(Products) or not Products):
Products = input ("ingrese el nombre de sus productos separados solo por una coma: ").split(",")
在您使用的代码中,即使您中断了if语句,也会每次打印
行(“Ingree productos validos”)
。请改用此代码
Medicina = ("jarabe", "ampolleta", "capsulas")
Electronica = ("computador", "scanner", "impresora")
Ropa = ("vestido", "pantalon", "blusa")
while True:
Products = input ("ingrese el nombre de sus productos separados solo por una coma: ").split(",")
print (Products)
for x in Products:
if (x in Medicina):
break
elif x in Electronica:
break
elif x in Ropa:
break
else:
print ("ingrese productos validos")
print (Products)
欢迎来到SO。别忘了用一种语言(如Python)标记你的问题。
中断
在for
循环中,不会中断while
循环。如果有任何产品无效或所有产品无效,你希望它出错吗?@JeffUK如果有任何产品无效。只有当它们都有效时,它才应该跳出循环。@Johnnymapp我怎样才能跳出while循环?@Johnnymapp我看到了这个问题,很抱歉,谢谢你指出我犯了一个我能犯的最愚蠢的错误,doneYes有一个动机,所以要得到最快的答案,但问题是,如果它不正确,它将很快被否决,而dv'ER通常不会在答案得到修正后留下来撤销dv。(有人在meta上说,当一个问题被编辑时,dv'ER会得到通知。我不确定这是否会成为政策,因为我很少dv)。@JohnnyMopp说,我很抱歉在没有重复检查的情况下发布我的答案,我甚至没有尽可能快地发布我的答案。我过去和现在都太累了,以至于我没有注意到我犯了一些愚蠢的错误。再次感谢你指出我的错误。我更喜欢while循环,它能告诉我他们在等待什么!不是(真的),事实上,你会有一个包含每个元组的“类别”列表,你应该动态地将所有类别连接在一起,而不是像我这里那样硬编码。