【发布时间】:2018-04-16 04:59:33
【问题描述】:
背景资料:
嘿, 我想做以下事情:我有一个以 ID 为键的字典和以各种事物为值的列表。该值的一项是字符串。我想检查一个列表是否包含这个 string。我想对字典中的所有键都这样做。
- 如果列表包含字符串,我想打印“字符串有效”
- 如果列表不包含字符串,我想打印“字符串无效”
到目前为止,一切都很好。
此外,我要检查的列表取决于用户的一个控制台输入,它指定应该检查哪个列表。控制台输入是“数字”。
我的想法是使用嵌套的 for 循环遍历我的字典和列表,并比较字符串(值的项)是否等于任何列表项。如果是,我想跳出循环。如果在列表中找不到字符串,我想执行 else 语句来打印我的“字符串无效”消息。
代码sn-p:
def validationHelper(myDict, myList):
for key in myDict:
for value in myDict[key][0]:
for item in myList:
if value==item:
validationHelper.true="String is valid"
break
else:
validationHelper.true="Warning: String is NOT valid"
def validation(anyList,helperfunc):
if anyList=="one":
return helperfunc(finalDict,myList1)
if anyList=="two":
return helperfunc(finalDict,myList2)
if anyList=="three":
return helperfunc(finalDict,myList3)
validation(number, validationHelper)
print(validationHelper.true)
问题:
我正在运行它,但无论字符串是否在列表中,我总是会得到 else 语句的打印输出。那么,我想我的 for 循环中的推理有误?或者,我根本不理解 for 循环?!我用 else 语句尝试了不同的缩进,但无法解决我的问题。
【问题讨论】:
-
记住这里有三个嵌套循环;
break只会突破最里面的那个。 -
哦,伙计,@DanielRoseman,我本可以自己知道的 -.-" 。所以,现在让我把我的“想法”用文字表达出来:我在列表中找到字符串,然后打破内部循环。我回到循环中,“for value in my Dict[key][0]”并执行搜索下一个键等。我的打印将是最后一件事,它被写入validationHelper.true,对吗?为了在找到匹配项时完全终止所有循环,我会添加 break 语句,对吗?
标签: python python-3.x for-loop if-statement