鱼C论坛

 找回密码
 立即注册
查看: 2389|回复: 4

[已解决]编写一个推导式,生成包含 100 以内所有勾股数(i,j,k)的列表。

[复制链接]
发表于 2023-4-11 20:24:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

for i in range(100):
    for j in range(100):
        for k in range(100):
            if (i**2+j**2 == k**2) and (i<j<k):
                print(i,j,k)

请问输出时如何变成一个列表, 并且能换行让他排版好看一点呢?
最佳答案
2023-4-11 20:26:41
要将输出变成一个列表,并在输出时换行使排版更整洁,你可以使用以下代码:
pythagorean_triples = []

for i in range(1, 100):
    for j in range(i, 100):
        for k in range(j, 100):
            if i**2 + j**2 == k**2:
                pythagorean_triples.append((i, j, k))

for index, triple in enumerate(pythagorean_triples):
    print(triple)
    if (index + 1) % 5 == 0:  # 每5个元组换一行
        print()

这段代码首先创建一个名为 pythagorean_triples 的空列表。然后,我们将满足条件的勾股数添加到列表中。

最后,我们遍历列表并打印每个元组。为了使输出更易于阅读,我们在每5个元组后换一行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-11 20:26:41 | 显示全部楼层    本楼为最佳答案   
要将输出变成一个列表,并在输出时换行使排版更整洁,你可以使用以下代码:
pythagorean_triples = []

for i in range(1, 100):
    for j in range(i, 100):
        for k in range(j, 100):
            if i**2 + j**2 == k**2:
                pythagorean_triples.append((i, j, k))

for index, triple in enumerate(pythagorean_triples):
    print(triple)
    if (index + 1) % 5 == 0:  # 每5个元组换一行
        print()

这段代码首先创建一个名为 pythagorean_triples 的空列表。然后,我们将满足条件的勾股数添加到列表中。

最后,我们遍历列表并打印每个元组。为了使输出更易于阅读,我们在每5个元组后换一行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-11 20:32:54 | 显示全部楼层
您可以用以下代码将输出转换为列表,并添加换行符以改善排版:

```
output = []
for i in range(100):
    for j in range(100):
        for k in range(100):
            if (i**2+j**2 == k**2) and (i<j<k):
                output.append([i,j,k])
               
for row in output:
    print(row)
```

或者,您可以使用字符串格式化来使输出更好地排版。例如,以下代码将使用制表符和换行符来排列输出:

```
output_str = ""
for i in range(100):
    for j in range(100):
        for k in range(100):
            if (i**2+j**2 == k**2) and (i<j<k):
                output_str += f"{i}\t{j}\t{k}\n"
print(output_str)
```

请注意,如果您想要将输出写入文件而不是在屏幕上打印,请使用 `write` 函数将结果写入文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-11 20:35:00 | 显示全部楼层
isdkz 发表于 2023-4-11 20:26
要将输出变成一个列表,并在输出时换行使排版更整洁,你可以使用以下代码:

我刚刚试了一下,发现还是一行一行的,只是每五行之间有个一行空行。请问这该怎么解决?类似这样子
(3, 4, 5)
(5, 12, 13)
(6, 8, 10)
(7, 24, 25)
(8, 15, 17)

(9, 12, 15)
(9, 40, 41)
(10, 24, 26)
(11, 60, 61)
(12, 16, 20)

(12, 35, 37)
(13, 84, 85)
(14, 48, 50)
(15, 20, 25)
(15, 36, 39)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 11:46:48 | 显示全部楼层
又是ChatGPT的答案吧,按C語言的思維去構思的答案。
打印后不换行,用end参数来设置你想要的结束符号:
print("谋事在人",end =" ")
print("成事在天", end ="|")
print("有生命便有希望", end =" ")
輸出:
谋事在人 成事在天|有生命便有希望
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 21:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表