嵌套for循环中的python数组[重复]

Posted

技术标签:

【中文标题】嵌套for循环中的python数组[重复]【英文标题】:Array in python in nested for-loops [duplicate] 【发布时间】:2021-11-11 08:57:57 【问题描述】:

我正在尝试创建一个运算符,用户在其中键入棋盘上的位置,如果它站在黑色或白色方块上,我的程序将打印出来。问题是我的 if 语句不能正确地遍历我的数组。

pos = input (f'Hvilken posisjon står brikken på? ') 

bokstav = pos[0]                

tall = int(pos[1])              

for x in bokstav:
  for y in str(tall):
    
    partall_svart = ['b','d','f','h']
    partall_hvit = ['a','c','e','g']

    print (partall_svart)
    print (partall_hvit)
    
    if x == partall_svart and int(y) % 2 == 0:
        print (f'Posisjon: bokstavtall\nSvart')
    
    elif x == partall_svart and int(y) % 2 == 1:
        print (f'Posisjon: bokstavtall\nHvit')
    
    if x == partall_hvit and int(y) % 2 == 0:
        print (f'Posisjon: bokstavtall\nHvit')
    
    elif x == partall_hvit and int(y) % 2 == 1:
        print (f'Posisjon: bokstavtall\nSvart')

【问题讨论】:

您指的是哪个if 声明?您是否要检查x 是否是partall_svart 中的项目之一?使用in,而不是== 这个问题在这里得到解答:Check if item is in an array / list aA 的代码点是奇数。因此,由于正方形A1 是黑色的,您只需检查行号的奇偶校验是否与列字母代码点的奇偶校验相同:即svart = ord(pos[0]) % 2 == int(pos[1]) % 2。不需要 for 循环。 【参考方案1】:

其实你也可以从字母部分做一个数字,然后在两个部分都使用%2。由于 ekhumoro 对ord() 的建议可能有点深奥,因此此代码使用find() 代替:

pos = input (f'Hvilken posisjon star brikken pa? ')

bokstav = pos[0]                
bokstavtall = "abcdefgh".find(bokstav.lower()) + 1

tall = int(pos[1])              

print (f'Posisjon: bokstavtall\n"Svart" if tall % 2 == bokstavtall % 2 else "Hvit"')

【讨论】:

现在世界真的变得如此愚蠢,以至于学习像ord这样的简单函数会被认为过于繁重吗?我也可以建议int(pos[0], 18) - 9 - 但大概这会被认为更加“深奥”,因为它意味着对数字基础的基本理解。 @ekhumoro 老实说,我更喜欢 18-base。记住 ASCII 代码只是不太直观。 ord 的全部意义是为了省去您记住代码点的麻烦吗?但无论如何,重要的是平价,而不是确切的数字。 记住 1 位 ASCII 码肯定是人们一直在做的事情 :-) 我指的是mathematical parity,它只是表示整数的奇数/偶数。我想大多数人都知道6597 是奇数,并且可以合理假设相关代码点是连续的;-)

以上是关于嵌套for循环中的python数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

for循环子命令中的bash变量扩展[重复]

一文了解Python中的循环(for while break continue 嵌套循环...)

Python循环语句

我的 for 循环没有根据条件删除数组中的项目? Python [重复]

如何在python中动态生成嵌套for循环[重复]

python中的if循环怎么样?