【发布时间】:2021-03-30 21:40:59
【问题描述】:
我有这段代码来打印带有 N 行的帕斯卡三角形(N 表示用户输入他们想要多少行)。我有所需的格式,但我不知道如何使代码工作。
我是 python 和一般编程的新手,并且真的很挣扎 functions。我不知道如何为函数编写参数,以及如何正确传递它们。
问题是从第二个函数开始(def pascal_triangle_tostring())。我可以获得输入并生成列表。但是从这里我不确定该怎么做。
#should take user input and validates it
def get_triangle_size():
while True:
numberOfRows = input("Enter the no. of rows: ")
try:
numberOfRows = int(numberOfRows)
except ValueError:
print("N must be an integer")
continue
if numberOfRows <= 0:
print("N must be at least 1")
continue
break
return (numberOfRows)
#Should generate Pascals triangle (shaped like a ladder)
def generate_pascal_triangle():
n = get_triangle_size()
if n == 1:
triangle = [[1]]
elif n == 2:
triangle = [[1], [1, 1]]
else:
triangle = [[1], [1, 1]]
for i in range(2, n):
row = [1]
for j in range(1, i):
row.append(triangle[i-1][j-1] + triangle[i-1][j])
row.append(1)
triangle.append(row)
#should convert the lists of pascal triangle into a string
def pascal_triangle_tostring():
output = ""
triangle = get_triangle_size()
for row in triangle:
for value in row:
output += str(value) + "\t"
output += '\n'
#Main code body should call these functions to print out pascal triangle
print("This program prints a Pascal's triangle with n line")
triangle_size = get_triangle_size()
pascal_triangle = generate_pascal_triangle()
print("Pascal’s triangle with %d lines:\n" % triangle_size)
print(pascal_triangle_tostring(pascal_triangle))
【问题讨论】:
-
我注意到的第一件事是你提出了一个
ValueError,它几乎立即被 excpet 语句捕获,所以你应该删除raise ValueError行,因为它弊大于利 -
@Matiiss 哦,是的,没错。我有一个 while 循环可以检查用户输入是否为正整数。我忘了删除
raise ValueError,因为我只是在玩代码以查看它的作用。谢谢你。我将编辑代码来解决这个问题 -
请从intro tour 重复on topic 和how to ask。您已经转储了大约 35 行代码,却没有让我们知道哪里出了问题。
-
请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。显示中间结果与您的预期不同的地方。
-
@Prune 回答我问题的非常慷慨的人明白我想说什么。我试图解释说代码不起作用有什么问题。我尝试调试和搜索谷歌,但我没有找到我可以理解和实施的解决方案。谢谢。
标签: python python-3.x function