所以我要做的就是在python中使用for循环来实现这个“Triangle”:
但是文字是这样的:
0|0
1|01
2|012
3|0123
4|01234
我目前的输出是:
0|01234
1|01234
2|01234
3|01234
4|01234
以下是输出的代码:
def pascal(n):
answer = ""
for rows in range(n):
answer = str(rows) + "|"
for col in range(n):
answer = answer + str(col)
print(answer)
pascal(5)
我的问题是,我怎么做才能做到这一点?(我对我应该做的事情感到难过):
0|0
1|01
2|012
3|0123
4|01234
如果有人想看看我到底想要完成什么,那就是我的解决方案
Soooooooo,这个蓝色三角形:
通过“n选择k”变成pascal三角形:
我试图找出for循环,所以我可以完成基本设置(这是蓝色三角形),你们帮助过:)
所以我想出的代码是n选择k的代码是:
def factorial(n):
answer = 1
for number in range(2, n+1):
answer = answer * number
return answer
def pascal(n):
answer = ""
for rows in range(n):
answer = ""
for col in range(rows+1):
answer = answer + str( int(factorial(rows) / (factorial(col)*factorial(rows-(col)))) )
print(answer)
pascal(10)
factorial()是n选择k公式中的感叹号,我用这段代码制作了公式的其余部分:
factorial(rows) / (factorial(col)*factorial(rows-(col)))
因此任何大于0的n都会形成一个pascal三角形:)
答案 0 :(得分:3)
你很亲密。打印每一行时,您不希望一直到n
。内部循环应停在rows
,因此将for col in range(n)
更改为for col in range(rows+1)
。
def pascal(n):
answer = ""
for rows in range(n):
answer = str(rows) + "|"
for col in range(rows+1):
answer = answer + str(col)
print(answer)
pascal(5)
答案 1 :(得分:2)
只需修改第二个for
<强>代码:强>
def pascal(n):
answer = ""
for rows in range(n):
answer = str(rows) + "|"
for col in range(rows + 1): # Modify this
answer = answer + str(col)
print(answer)
pascal(5)
为什么? - 因为您的第一个for
用于行数,第二个for
用于该行中的元素,您不想循环结束,再说一遍,5
,只是在正确数量的元素上,在这种情况下,它将是行数。
答案 2 :(得分:1)
您的代码是正确的,但您的内部循环不应循环到n
。您应该将其替换为rows+1
。
def pascal(n):
answer = ""
for rows in range(n):
answer = str(rows) + "|"
for col in range(rows+1):
answer = answer + str(col)
print(answer)
pascal(5)
输出:
0|0
1|01
2|012
3|0123
4|01234
答案 3 :(得分:0)
老实说,我不会使用for循环来做到这一点。对于您想要做的事情,while循环将更有效。例如:
pascal(n):
answer=''
answerright = ''
i=0
while i <= n:
answerright += str(i)
answer += str(i) + '|' + answerright + '\n'
i+=1
return answer
这将生成您正在寻找的内容,而不会使代码过于复杂。你没有说你是否需要来使用for循环,但如果没有,这是更好的解决方案。在python中,所有for循环都是foreach循环,永远记住它。
答案 4 :(得分:0)
这应该让你走上正确的道路:
for row in range (5):
row_string = str(row) + "|"
for i in range(row+1):
row_string += str(i)
print row_string
您只想在内部for循环中迭代到当前行(+1,因为我们在这里为零索引)。