for 语句中的 if 语句仅输出 else 部分的打印语句,即使 if 和 elif 部分满足条件
If statement within for statement is only outputting the print statement of the else portion even though conditions met in if and elif parts
我试图在 for 循环中将 if/else 语句获取到 运行。尽管参数满足其上方所有语句的条件,但输出是 else 部分。这是我的代码:
import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)
print(string.digits)
print(string.punctuation)
my_string = '4n%$P9'
for index in range(0, len(my_string), 1):
if my_string in string.ascii_lowercase:
print("'{}' is a lowercase letter.".format(my_string))
elif my_string in string.ascii_uppercase:
print("'{}' is an uppercase letter.".format(my_string))
elif my_string in string.digits:
print("'{}' is a digit in arabic.".format(my_string))
elif my_string in string.punctuation:
print("'{}' is a punctuation mark.".format(my_string))
else:
print("Does not compute.")
输出是这样的:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Does not compute.
Does not compute.
Does not compute.
Does not compute.
Does not compute.
Does not compute.
我没有收到语法错误,所以我想知道,我是否没有使用正确的关键字?逻辑有问题吗?
您正在尝试比较整个字符串是否在 string.ascii_lowercase
中,而不仅仅是字母,您实际上需要 运行 my_string[index]
.
import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)
print(string.digits)
print(string.punctuation)
my_string = '4n%$P9'
for index in range(0, len(my_string), 1):
if my_string[index] in string.ascii_lowercase:
print("'{}' is a lowercase letter.".format(my_string[index]))
elif my_string[index] in string.ascii_uppercase:
print("'{}' is an uppercase letter.".format(my_string[index]))
elif my_string[index] in string.digits:
print("'{}' is a digit in arabic.".format(my_string[index]))
elif my_string[index] in string.punctuation:
print("'{}' is a punctuation mark.".format(my_string[index]))
else:
print("Does not compute.")
问题不在于 if
语句,而在于 for
循环。看起来您想遍历 my_string
中的每个字符并单独测试,而不是一次测试 my_string
:
for c in my_string:
if c in string.ascii_lowercase:
print(f"'{c}' is a lowercase letter.")
elif c in string.ascii_uppercase:
print(f"'{c}' is an uppercase letter.")
elif c in string.digits:
print(f"'{c}' is a digit in arabic.")
elif c in string.punctuation:
print(f"'{c}' is a punctuation mark.")
else:
print(f"'{c}' does not compute.")
打印:
'4' is a digit in arabic.
'n' is a lowercase letter.
'%' is a punctuation mark.
'$' is a punctuation mark.
'P' is an uppercase letter.
'9' is a digit in arabic.
请注意,打印 c
作为“不计算”消息的一部分可以让您看到哪个字符没有计算——如果您在原始代码中使用 my_string
完成了此操作,你会看到:
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
这将是问题所在的一个很好的线索!
您正在检查整个字符串是否是 string
模块中每个常量的子字符串。您要对字符串中的 每个字符 执行该检查,如下所示:
import string
my_string = '4n%$P9'
for char in my_string:
if char in string.ascii_lowercase:
print("'{}' is a lowercase letter.".format(char))
elif char in string.ascii_uppercase:
print("'{}' is an uppercase letter.".format(char))
elif char in string.digits:
print("'{}' is a digit in arabic.".format(char))
elif char in string.punctuation:
print("'{}' is a punctuation mark.".format(char))
else:
print("Does not compute.")
这输出:
'4' is a digit in arabic.
'n' is a lowercase letter.
'%' is a punctuation mark.
'$' is a punctuation mark.
'P' is an uppercase letter.
'9' is a digit in arabic.
我试图在 for 循环中将 if/else 语句获取到 运行。尽管参数满足其上方所有语句的条件,但输出是 else 部分。这是我的代码:
import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)
print(string.digits)
print(string.punctuation)
my_string = '4n%$P9'
for index in range(0, len(my_string), 1):
if my_string in string.ascii_lowercase:
print("'{}' is a lowercase letter.".format(my_string))
elif my_string in string.ascii_uppercase:
print("'{}' is an uppercase letter.".format(my_string))
elif my_string in string.digits:
print("'{}' is a digit in arabic.".format(my_string))
elif my_string in string.punctuation:
print("'{}' is a punctuation mark.".format(my_string))
else:
print("Does not compute.")
输出是这样的:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Does not compute.
Does not compute.
Does not compute.
Does not compute.
Does not compute.
Does not compute.
我没有收到语法错误,所以我想知道,我是否没有使用正确的关键字?逻辑有问题吗?
您正在尝试比较整个字符串是否在 string.ascii_lowercase
中,而不仅仅是字母,您实际上需要 运行 my_string[index]
.
import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)
print(string.digits)
print(string.punctuation)
my_string = '4n%$P9'
for index in range(0, len(my_string), 1):
if my_string[index] in string.ascii_lowercase:
print("'{}' is a lowercase letter.".format(my_string[index]))
elif my_string[index] in string.ascii_uppercase:
print("'{}' is an uppercase letter.".format(my_string[index]))
elif my_string[index] in string.digits:
print("'{}' is a digit in arabic.".format(my_string[index]))
elif my_string[index] in string.punctuation:
print("'{}' is a punctuation mark.".format(my_string[index]))
else:
print("Does not compute.")
问题不在于 if
语句,而在于 for
循环。看起来您想遍历 my_string
中的每个字符并单独测试,而不是一次测试 my_string
:
for c in my_string:
if c in string.ascii_lowercase:
print(f"'{c}' is a lowercase letter.")
elif c in string.ascii_uppercase:
print(f"'{c}' is an uppercase letter.")
elif c in string.digits:
print(f"'{c}' is a digit in arabic.")
elif c in string.punctuation:
print(f"'{c}' is a punctuation mark.")
else:
print(f"'{c}' does not compute.")
打印:
'4' is a digit in arabic.
'n' is a lowercase letter.
'%' is a punctuation mark.
'$' is a punctuation mark.
'P' is an uppercase letter.
'9' is a digit in arabic.
请注意,打印 c
作为“不计算”消息的一部分可以让您看到哪个字符没有计算——如果您在原始代码中使用 my_string
完成了此操作,你会看到:
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
'4n%$P9' does not compute.
这将是问题所在的一个很好的线索!
您正在检查整个字符串是否是 string
模块中每个常量的子字符串。您要对字符串中的 每个字符 执行该检查,如下所示:
import string
my_string = '4n%$P9'
for char in my_string:
if char in string.ascii_lowercase:
print("'{}' is a lowercase letter.".format(char))
elif char in string.ascii_uppercase:
print("'{}' is an uppercase letter.".format(char))
elif char in string.digits:
print("'{}' is a digit in arabic.".format(char))
elif char in string.punctuation:
print("'{}' is a punctuation mark.".format(char))
else:
print("Does not compute.")
这输出:
'4' is a digit in arabic.
'n' is a lowercase letter.
'%' is a punctuation mark.
'$' is a punctuation mark.
'P' is an uppercase letter.
'9' is a digit in arabic.