我设计了一个程序,该程序接受用户输入数字三角形中的每个数字,并向控制台显示它是否是帕斯卡三角形。问题是代码一直显示数字三角形不是帕斯卡三角形。我只是想知道是什么原因导致它即使显示也不会继续显示“这不是一个帕斯卡三角形”。谢谢。
def checkIfPascal(dataLines):
size = int(dataLines[0])
n = 2 * size + 1
grid = [[0 for x in range(n)] for y in range(size)]
left = 1
# do not read first line
for i in range(size, 0, -1):
parts = dataLines.split(' ')
count = 0
for p in parts:
grid[i - 1][left + 2 * count] = int(p)
count += 1
left += 1
# if there are not n+1 numbers, then it is not pascal
if (count != i):
return False
left = 1
for i in range(size - 1, -1, -1):
if i == 0:
return (grid[i][left] == 1)
numbers = i + 1
count = 0
while count < numbers:
current = grid[i][left + count * 2]
upperLeft = grid[i - 1][left - 1 + count * 2]
upperRight = grid[i - 1][left + 1 + count * 2]
if (current != (upperLeft + upperRight)):
return False
count += 1
left += 1
return False
# main function
dataLines = input("please enter the height: ")
rows = int(dataLines) # --> convert user input to an integer
def triangle(rows):
PrintingList = list()
for rownum in range (1, rows + 1): # use colon after control structure to denote the beginning of block of code
PrintingList.append([]) # append a row
for iteration in range (rownum):
newValue = input("Please enter the next number:")
PrintingList[rownum - 1].append(int(newValue))
print()
for item in PrintingList:
print (*item)
triangle(rows)
def main():
if checkIfPascal(dataLines):
print('It is a pascal triangle')
else:
print('It is not a pascal triangle')
main()
当用户输入一个数字三角形为Pascal三角形时,它应在控制台上显示“这是一个Pascal三角形”
答案 0 :(得分:0)
这是在构建时不测试代码的完全灾难。让我们看看程序如何启动:
dataLines = input("please enter the height: ")
rows = int(dataLines)
triangle(rows)
def main():
if checkIfPascal(dataLines):
print('It is a pascal triangle')
else:
print('It is not a pascal triangle')
main()
由triangle()
读取的用户三角形被打印并丢弃!然后,我们在未转换的 string 版本的三角形高度上调用checkIfPascal()
,而不是三角形本身!
checkIfPascal()
是它自己的代码沼泽。尽管triangle()
函数似乎将数据格式化为list
的{{1}}中的list
,但是int
对其参数调用checkIfPascal()
就像它是由字符串组成的!这两个函数的共享数据结构不一致。
从小处开始,然后进行测试。不要编写整个程序,并假设您(或我们)可以简单地调试工作。我认为这是一个很棒的程序。