嵌套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,它只是表示整数的奇数/偶数。我想大多数人都知道65
和97
是奇数,并且可以合理假设相关代码点是连续的;-)以上是关于嵌套for循环中的python数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
一文了解Python中的循环(for while break continue 嵌套循环...)