我误解了 continue 声明吗?
Do I misunderstand the continue statement?
我正在尝试测试列表中的表情符号。这是练习:
给定一个数组 (arr) 作为参数,完成函数 countSmileys,它应该 return 笑脸的总数。
笑脸规则:
每个笑脸必须包含一双有效的眼睛。眼睛可以标记为:或;
笑脸可以有鼻子,但不是必须的。鼻子的有效字符是 - 或 ~
每个笑脸都必须有一张笑嘴,嘴巴应标有 ) 或 D。
除提到的字符外,不允许使用其他字符。
有效的笑脸示例:
:) :D ;-D :~)
无效的笑脸:
;( :> :} :]**
由我的代码编辑的值 return 总是 0 或整个列表的长度。就好像我的布尔眼睛、鼻子、嘴巴在我的 for 循环开始时从未被重新分配 False 的值。
怎么回事?
这是我的程序:
def count_smileys(arr):
count = 0
for smile in arr:
eye = False
nose = False
mouth = False
if len(smile) == 2:
if smile[0] == ":" or ";":
eye = True
else:
continue
if smile[1] == ")" or "D":
mouth = True
else:
continue
if eye and mouth:
count += 1
if len(smile) == 3:
if smile[0] == ":" or ";":
eye = True
else:
continue
if smile[1] == "-" or "~":
nose = True
else:
continue
if smile[2] == ")" or "D":
mouth = True
else:
continue
if eye and nose and mouth:
count += 1
return count
print(count_smileys([';]', ':[', ';*', ':$', ';-D']))
你误解的是 or
声明。
当你写:
if smile[0] == ":" or ";":
测试的第一个表达式是smile[0] == ":"
。如果那是 False
则测试第二个表达式,在这种情况下,它只是 ";"
。通过在 Python shell:
中尝试,您可以看到这总是计算为 True
>>> bool(";")
True
>>> bool(False or ";")
True
因此您的 or
语句应该改为:
if smile[0] == ":" or smile[0] == ";":
您已经完成了所有 or
语句,因此您需要修正这些语句。
我正在尝试测试列表中的表情符号。这是练习:
给定一个数组 (arr) 作为参数,完成函数 countSmileys,它应该 return 笑脸的总数。
笑脸规则:
每个笑脸必须包含一双有效的眼睛。眼睛可以标记为:或;
笑脸可以有鼻子,但不是必须的。鼻子的有效字符是 - 或 ~
每个笑脸都必须有一张笑嘴,嘴巴应标有 ) 或 D。
除提到的字符外,不允许使用其他字符。
有效的笑脸示例:
:) :D ;-D :~)
无效的笑脸:
;( :> :} :]**
由我的代码编辑的值 return 总是 0 或整个列表的长度。就好像我的布尔眼睛、鼻子、嘴巴在我的 for 循环开始时从未被重新分配 False 的值。
怎么回事?
这是我的程序:
def count_smileys(arr):
count = 0
for smile in arr:
eye = False
nose = False
mouth = False
if len(smile) == 2:
if smile[0] == ":" or ";":
eye = True
else:
continue
if smile[1] == ")" or "D":
mouth = True
else:
continue
if eye and mouth:
count += 1
if len(smile) == 3:
if smile[0] == ":" or ";":
eye = True
else:
continue
if smile[1] == "-" or "~":
nose = True
else:
continue
if smile[2] == ")" or "D":
mouth = True
else:
continue
if eye and nose and mouth:
count += 1
return count
print(count_smileys([';]', ':[', ';*', ':$', ';-D']))
你误解的是 or
声明。
当你写:
if smile[0] == ":" or ";":
测试的第一个表达式是smile[0] == ":"
。如果那是 False
则测试第二个表达式,在这种情况下,它只是 ";"
。通过在 Python shell:
True
>>> bool(";")
True
>>> bool(False or ";")
True
因此您的 or
语句应该改为:
if smile[0] == ":" or smile[0] == ";":
您已经完成了所有 or
语句,因此您需要修正这些语句。