If statement IF语句真值条件
我制作了一个函数来验证用户参数是否遵循规则(仅限带有a、B、C、D字母的单词) 我的问题是关于“~!@$%^&*”字符。如果我在shell中输入: 函数(“A&BCD”),结果为真If statement IF语句真值条件,if-statement,python-3.x,If Statement,Python 3.x,我制作了一个函数来验证用户参数是否遵循规则(仅限带有a、B、C、D字母的单词) 我的问题是关于“~!@$%^&*”字符。如果我在shell中输入: 函数(“A&BCD”),结果为真 问题出在哪里?函数从一开始就迭代字符串,因此它首先考虑'A''A'满足第一个条件,因此函数返回True。它不会继续运行,因为return会立即结束包含return语句的函数 如果希望函数仅在所有输入字符都有效的情况下返回True,则在检查所有字符之前,不要返回有效大小写: for letter in var:
问题出在哪里?函数从一开始就迭代字符串,因此它首先考虑
'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
注释/取消注释python版本末尾的打印行
def check_format(check_string):
validated = True
bad_letters = "~!@#$%^&*"
for letter in bad_letters:
if letter in check_string:
validated = False
break
if validated:
good_letters = "ABCD"
for letter in check_string:
if not letter in good_letters:
validated = False
break
return validated
print(check_format("A&BCD")) #python 3
#print check_format("A&BCD") #python 2
正如用户2357112的回答所示,我们检查坏信的部分也是多余的,但我把它放在那里是为了告诉您如何做。您检查了两次字母C,但没有检查一次字母B。谢谢您的帮助!我现在明白了
def check_format(check_string):
validated = True
bad_letters = "~!@#$%^&*"
for letter in bad_letters:
if letter in check_string:
validated = False
break
if validated:
good_letters = "ABCD"
for letter in check_string:
if not letter in good_letters:
validated = False
break
return validated
print(check_format("A&BCD")) #python 3
#print check_format("A&BCD") #python 2