有什么方法可以使这个 if 语句更短更清晰吗?
Is there any way to make this if statement shorter and cleaner?
我有这么长的 if 语句来查看一个字符串是否等于任何不超过 9 的数字。但它太长了,需要很多 space。有没有办法让它更短更干净?我是编程新手。
if calculated == "1" or calculated == "2" or calculated == "3" or calculated == "4" or calculated == "5" or calculated == "6" or calculated == "7" or calculated == "8" or calculated == "9":
是的,试试这个:
if calculated in ['1','2','3',...,'9']:
# do
或者您可以这样做:
if calculated in [str(i) for i in range(1, 10)]:
# do
也可以这样:
if calculated in list(map(str, range(1, 10))):
# do
或者说,在这个简单的例子中,
try:
if int(calculated) in range(1, 10):
反之亦然:
if calculated in map(str, range(1, 10)):
这闻起来像 XY problem。如果你知道你的字符串是一个数字,你应该把它转换成一个数字并使用基于整数的逻辑:
if 1 <= int(calculated) <= 9:
pass
但如果由于某种原因这不起作用,您的逻辑可以简化为检查范围:
if calculated in (str(n) for n in range(1, 10)):
pass
我有这么长的 if 语句来查看一个字符串是否等于任何不超过 9 的数字。但它太长了,需要很多 space。有没有办法让它更短更干净?我是编程新手。
if calculated == "1" or calculated == "2" or calculated == "3" or calculated == "4" or calculated == "5" or calculated == "6" or calculated == "7" or calculated == "8" or calculated == "9":
是的,试试这个:
if calculated in ['1','2','3',...,'9']:
# do
或者您可以这样做:
if calculated in [str(i) for i in range(1, 10)]:
# do
也可以这样:
if calculated in list(map(str, range(1, 10))):
# do
或者说,在这个简单的例子中,
try:
if int(calculated) in range(1, 10):
反之亦然:
if calculated in map(str, range(1, 10)):
这闻起来像 XY problem。如果你知道你的字符串是一个数字,你应该把它转换成一个数字并使用基于整数的逻辑:
if 1 <= int(calculated) <= 9:
pass
但如果由于某种原因这不起作用,您的逻辑可以简化为检查范围:
if calculated in (str(n) for n in range(1, 10)):
pass