创建一个打印雪花PYTHON的二维数组

2024-10-02 22:38:25 发布

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

我试图创建一段代码,它将接受一个奇数作为输入,并使用这个n*n图创建一个雪花

Enter Integer: 5
* . * . *
. * * * .
* * * * *
. * * * .
* . * . *

我很确定我走的是正确的道路

n = int(input("Enter odd input: "))
while n % 2 == 0:
  print("Invalid Input.  Input must be odd")
  n = int(input("Enter odd input: "))
snowflake = [["."] * n for i in range(n)]
middle = int((n-1) / 2)
for i in range(n):
  snowflake[i][2] = "*"
  snowflake[2][i] = "*"
  snowflake[i][i] = "*"
  diagnol = 5-i
  snowflake[i][diagnol] = "*"
for i in snowflake:
  for j in i:
    print(j, end=' ')
  print()
print()

但我总是犯这个错误

snowflake[i][diagnol] = "*"
IndexError: list assignment index out of range

有人能帮我编辑代码或给我一个提示吗?(这是家庭作业)


Tags: 代码inforinputrangeintegerintodd
2条回答

我决定不修复您的算法,但作为一个工作示例,提供我自己的算法:

Try it online!

n = 9
a = [['.'] * n for i in range(n)]
for i in range(n):
    a[n // 2][i], a[i][n // 2], a[i][i], a[i][n - 1 - i] = ['*'] * 4
print('\n'.join([''.join(a[i]) for i in range(n)]))

输出:

*...*...*
.*..*..*.
..*.*.*..
...***...
*********
...***...
..*.*.*..
.*..*..*.
*...*...*

调试之后,我发现5太大了,一些代码只有在输入为5时才能工作

n = int(input("Enter odd input: "))
while n % 2 == 0:
  print("Invalid Input.  Input must be odd")
  n = int(input("Enter odd input: "))
snowflake = [["."] * n for i in range(n)]
middle = int((n-1) / 2)
for i in range(n):
  snowflake[i][middle] = "*"
  snowflake[middle][i] = "*"
  snowflake[i][i] = "*"
  diagnol = n -1 -i
  snowflake[i][diagnol] = "*"
for i in snowflake:
  for j in i:
    print(j, end=' ')
  print()
print()

相关问题 更多 >