如何划分列表的所有元素并将它们全部打印在单独的行上?[复制]

How to divide all elements of a list and print them all on separate lines? [duplicate]

提问人:TRNF 提问时间:9/29/2023 最后编辑:Bart KiersTRNF 更新时间:9/29/2023 访问量:46

问:

我是编码新手,必须制作一个可以计算角度的函数。我想使用 for 循环将 360 除以列表中的所有元素,然后将它们分别打印在单独的行上,但每次它只除以最后一个元素。我该如何解决这个问题?

num_sides = [3,4,5,6]

def compute_turn_angle():
    for i in range(len(num_sides)):
        turn_angle = 360 / num_sides[i]
    return turn_angle

print(compute_turn_angle())

#This is what I get:
 60.0

#But this is what I want:
 120
  90
  72
  60
python 列表 函数 for-loop

评论

0赞 NotAName 9/29/2023
在函数中放置一个 print 语句或从函数返回一个值列表,因为目前它只返回最后一个计算值
0赞 Karl Knechtel 9/29/2023
“然而,每次它只划分最后一个元素。它执行每个除法,但只能发生一次,并返回返回具有的单个值。有关详细信息,请参阅链接的副本。returnreturn turn_angleturn_angle
0赞 Reilas 9/29/2023
[360. / x 表示 x in num_sides]

答:

0赞 Stark 9/29/2023 #1

在单独的列表中进行更改,并在打印时返回该列表,为打印函数的“end”属性提供参数值。

    num_sides = [3,4,5,6]
    
    def compute_turn_angle():
        turn_angle =[]
        for i in range(len(num_sides)):
            turn_angle[i]=(360 / num_sides[i])
        return turn_angle
    
    print(compute_turn_angle(),end='\n')

评论

0赞 NotAName 9/29/2023
这不会产生 OP 请求的确切输出。你测试过代码吗?
0赞 NotAName 9/29/2023
也没必要用丑陋的形式,做就行了range(len(num_sides))for i in range num_sides
0赞 Stark 9/29/2023
是的,对于整体用例也有更好的方法,我们不需要新列表,我们也可以更新当前列表,但我尝试从 OP 代码中更改最小值
0赞 NotAName 9/29/2023
更好的方法不是“从 OP 代码中更改最小值”,而是展示正确的模式,即使需要更多更改。此外,更新现有列表是一种反模式,您永远不应该这样做。
0赞 Stark 9/29/2023
我也同意,仅供参考,更新一个范围仅限于函数的列表,在函数内不是反模式,如果我实际更新原始输入列表,反模式将是。
0赞 eekinci 9/29/2023 #2

之后,您可以在列表后面附加结果,以便您可以循环打印它:turn_angle = 360 / num_sides[i]turn_anglesturn_angles.append(turn_angle)

num_sides = [3, 4, 5, 6]

def compute_turn_angles():
    turn_angles = []
    for i in range(len(num_sides)):
        turn_angle = 360 / num_sides[i]
        turn_angles.append(turn_angle)
    return turn_angles

angles = compute_turn_angles()

for angle in angles:
    print(angle)

如果不将结果附加到列表中,您只是覆盖列表中的最后一个结果。 始终只包括最后的计算。turn_angle60

print(turn_angle)之后也会做这个伎俩;)turn_angle = 360 / num_sides[i]