3 回答
TA贡献1900条经验 获得超5个赞
如果你想显示x,下面的代码就足够了:你可以将字母的大小相差N,尽量避免硬编码一些任意数字。
N = 8
# starting from the 1st row and ending at the 8th row
for row in range(1, N):
# within each row, starting from the 1st col and ending in the 8th col
for col in range(1, N):
# decide what to print at the current location
if row == col or row == N-col:
print("X", end="")
else:
print("O", end="")
# go onto the next row
print()
TA贡献1797条经验 获得超4个赞
正如您所看到的,您的逻辑不会执行任何插入第二个操作X
。
for row in range (1, 8): ... elif((row + 1)) == 0:
由于 row 采用 0-7 范围内的值,因此这是不可能的:仅当 时才为 true row = -1
。是的,Python 允许您从右侧对列表进行索引,但用作索引的变量不会自动采用第二个值来满足这些语义。您必须明确地为其指定一个值。
您需要重写您的条件以row
与最终索引进行比较,并且您必须涉及col
,就像您对主对角线所做的那样。
TA贡献1951条经验 获得超3个赞
您可以将字符串转换为列表,并根据字符串的长度和当前的 i 使更改对称
LEN = 7#length of string
string = ""
#initialize string
for i in range(LEN):
string += "O"
#change and print
for i in range(LEN):
new_string = list(string)#from string to list
new_string[i] = "X"#change the i
new_string[LEN-i-1] = "X"#symmetrical change
new_string = "".join(new_string)#list to string
print(new_string)
您可以根据需要更改 LEN 和字符
添加回答
举报