【问题标题】:Create a 2d array that prints out a snowflake PYTHON创建一个打印出雪花 PYTHON 的二维数组
【发布时间】:2021-06-23 12:18:58
【问题描述】:

我正在尝试创建一段代码,它将接受一个奇数作为输入,并使用这个 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

有人可以帮助编辑我的代码或给我提示吗?(这是家庭作业)

【问题讨论】:

  • 在学习如何编写代码的同时,也应该学习如何调试。 This article 提供了一些很好的提示来帮助您入门。我建议打印出snowflakeidiagonal 的值,看看你做错了什么。
  • 第一次迭代i=0,所以diagnol=5 确实超出了列表的范围。
  • 打印索引,以便找到超出范围的位置
  • @Code-Apprentice 谢谢 :)

标签: python python-3.x arraylist pycharm


【解决方案1】:

我决定不修复你的算法,而是作为一个工作示例来提供我自己的算法:

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)]))

输出:

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

【讨论】:

    【解决方案2】:

    调试后发现 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-26
      • 2015-02-03
      • 2016-02-16
      • 2020-08-02
      • 2016-01-25
      • 2023-01-04
      相关资源
      最近更新 更多