变量>=(范围)

2024-09-26 04:56:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图改变什么地图显示时,要求得到满足。我想在elif语句上使用一个范围来节省一些时间。你知道吗

curmov在0-31范围内每转一次都会改变

map1()、2、3是ASCII映射

def curmap():
    global curmov
    if curmov <=9:
        mapNow = map1()
    elif curmov (10,24):
        mapNow = map2()
    elif curmov (25,30):
        mapNow = map3()

Tags: ifdefascii时间地图语句globalelif
1条回答
网友
1楼 · 发布于 2024-09-26 04:56:42

我不是100%确定curmov(10,24)应该是什么意思,但我怀疑是这样的:

10 <= curmov < 24

……或者,相当于:

curmov in range(10, 24)

(对于使用Python2.x的未来读者,请注意:不要使用第二个。在Python2.x中,这将创建一个包含14个数字的列表,以便将它们与curmov逐一进行比较,这将是愚蠢的。在python3.x中,它创建了一个range对象,可以立即处理这个问题。)


注意,我使用的是10 <= curmov < 24。这就是所谓的“半开”范围,左半部分是“闭”的,因为10是范围的一部分,而右半部分是“开”的,因为24不是。在Python中,range(10, 24)检查相同的内容,因为Python中所有范围都是半开的。如果你想要一个“开放”的范围(既不是10也不是24作为它的一部分)或者一个“封闭”的范围(既有10又有24计数),第一个很容易改变,只要适当地改变<=<;第二个,你必须在某处添加+1-1。你知道吗


但是,如果您的范围不应该重叠或有任何间隙,只需执行以下操作可能会更简单、可读性更强(甚至更健壮,因为不可能意外地被一个重叠和间隙关闭):

if curmov <= 9: blah
elif curmov <= 24: bleh
elif curmov <= 30: blih
else: bluh

相关问题 更多 >