jNe*_*Nek 2 if-statement python-3.x
我做了一个函数来验证用户参数是否遵循规则(只有带有A,B,C,D字母的单词).
for letter in var:
if letter == 'A' or letter == 'C' or letter == 'C' or letter == 'D':
return True
elif letter == "~" or letter == "!" or letter == "#" or letter == "$" or letter == "%" or letter == "^" or letter == "&" or letter == "*":
return False
else:
return False
Run Code Online (Sandbox Code Playgroud)
我的问题是关于"〜!@#$%^&*"字符.如果我进入shell:
功能("A&BCD"),结果为True.
问题是什么?
该函数从头开始迭代字符串,因此它'A'首先考虑.'A'满足第一个条件,所以函数返回True.它不会继续,因为return立即结束包含该return语句的函数.
如果您希望函数仅True在所有输入字符都有效时返回,则在检查完所有字符之前不要返回有效情况:
for letter in var:
if letter not in 'ABCD':
# The input contains an invalid character; return immediately.
return False
# Otherwise, everything we've checked so far is OK, but the rest of the
# string might contain invalid characters. Keep going.
# The string had no invalid characters.
return True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |