将多个变量与值进行比较 - Python

Comparing more than one variable to value(s) - Python

提问人:user21488634 提问时间:11/7/2023 更新时间:11/7/2023 访问量:59

问:

我正在解决一个只需要使用基本数学和比较运算符的国际象棋问题。我需要该程序仅在 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 中做到这一点(使用基本的数学和比较运算符),而不必单独比较每个变量?

python 变量 比较

评论

0赞 Mark 11/7/2023
运算符的工作方式不允许使用您尝试使用的语法。你可以做类似的事情,但不确定这是否比只使用两个比较更简单。all(1 <= n <= 8 for n in (a,b))
1赞 Hetvi 11/7/2023
你想要的东西在python中是无法直接实现的,你必须直接或间接地放置单独的条件。
0赞 Suraj Shourie 11/7/2023
您必须进行所有不同的比较(A >= 1) & (A <= 8) & (B >= 1) & (B <= 8)
1赞 Matthias 11/7/2023
@SurajShourie 是 Python 中的按位“and”。我的解决方案是.&(1 <= A <= 8) and (1 <= B <= 8)

答:

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