提问人:user21488634 提问时间:11/7/2023 更新时间:11/7/2023 访问量:59
将多个变量与值进行比较 - Python
Comparing more than one variable to value(s) - Python
问:
我正在解决一个只需要使用基本数学和比较运算符的国际象棋问题。我需要该程序仅在 8x8 国际象棋棋盘内工作。 我有两个变量(A、B)——两者都应该是 >=1 和 <=8 才能使程序正常工作。我尝试了这些代码选项:
1 <= A, B <= 8
1 <= (A, B) <= 8
1 <= (A and B) <= 8
我还尝试将 A 和 B 都分配给第三个变量 - C,然后比较变量 C:
1 <= C <= 8
所有这些都不起作用。有没有办法在 Python 中做到这一点(使用基本的数学和比较运算符),而不必单独比较每个变量?
答:
0赞
aw4lly
11/7/2023
#1
在我的脑海中,有几种不同的方法可以在 python 中做到这一点。
如果它们都是整数,则使用 pythons range 命令有效(请记住,它包含第一个数字,不包括最后一个数字)A in range(1,9) and B in range (1,9)
老实说,我只会编写一个函数,该函数采用值列表和最小/最大数字。
def in_range(list_values, minimum_value, maximum_value):
for num in list_values:
if num < minimum_value or num > maximum_value:
return False
return True
print(in_range( [A,B], 1, 8)
编辑只需重新阅读问题,我仍然建议使用函数调用,但您可能可以这样做
def in_range(A,B):
return A in range (0,9) and B in range(0,9)
0赞
blhsing
11/7/2023
#2
当比较只涉及 2 个变量时,单独比较每个变量并没有错(并且总是只涉及 2 个变量,因为它们代表棋盘上的坐标)。
也就是说,如果由于某种原因必须保持表达式的单个链式比较,则可以使用。8 >= A >= 1 <= B <= 8
评论
all(1 <= n <= 8 for n in (a,b))
(A >= 1) & (A <= 8) & (B >= 1) & (B <= 8)
&
(1 <= A <= 8) and (1 <= B <= 8)