gpt4 book ai didi

python - 在 Python 中创建雪花

转载 作者:行者123 更新时间:2023-12-04 08:24:14 24 4
gpt4 key购买 nike

我正在尝试用 Python 创建一个程序,该程序根据输入的数字创建雪花。下面是我的代码:

n = int(input())
a = [["."] * n] * n

temp = n/2
start_point = 0
mid_point = int(temp)
end_point = n - 1

for i in range(n):
if i > mid_point + 1:
start_point -= 1
end_point += 1

for j in range(n):

if (j == start_point) or (j == mid_point) or (j == end_point) or (i == mid_point):
a[i][j] = "*"
else:
a[i][j] = "."


if i < mid_point - 1:
start_point += 1
end_point -= 1


for row in a:
print(' '.join([str(elem) for elem in row]))
例如,如果输入为“5”,则输出应如下所示:
* . * . *
. * * * .
* * * * *
. * * * .
* . * . *
但是,我的输出看起来像:
. * * * .
. * * * .
. * * * .
. * * * .
. * * * .
我确信我的代码是正确的,所以我用 Java 重写了它:
public class Snowflake {

public static void createSnowflake(int n) {
String[][] array = new String[n][n];

float temp = (float) (n/2);
System.out.println(temp);
int start_point = 0;
int mid_point = (int) (temp);
System.out.println(mid_point);
int end_point = n - 1;

for(int i = 0; i < n; i++) {
if(i > mid_point+1) {
start_point--;
end_point++;
}
for(int j = 0; j < n; j++) {
if((j == start_point) || (j == mid_point) || (j == end_point) || (i == mid_point)) {
array[i][j] = "*";
}
else {
array[i][j] = ".";
}
}

if(i < mid_point-1) {
start_point++;
end_point--;
}
}

for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
System.out.print(array[i][j]);
}
System.out.print("\n");
}
}

public static void main(String[] args) {
createSnowflake(5);
}
}
它按预期工作。在我看来,底层逻辑完全相同,但 Java 代码有效而 Python 代码无效。有人能帮我找到我在 Python 语法中犯了错误的地方,或者我的 Java 代码与它有什么不同吗?

最佳答案

如果更改a的创建到:

 a= [["." for j in range(n)] for i in range(n)]
它应该修复它。
这与python复制列表的方式有关。
检查评论中链接到您的问题的问题。
喜欢这个问题,我觉得它只能在一年中的这个时候出现。

关于python - 在 Python 中创建雪花,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65349556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com