用Python中的Pascal三角形

2024-04-24 10:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临的唯一问题是assert语句。我需要确保用户只输入大于零的整数,而不输入任何字符或字符符号如果用户输入字符或符号,assert语句应该打印错误语句。我已经尝试过isinstance()type(variable) == int,但只得到一个名称错误。有没有不使用if的方法?你知道吗

def PascalTriangle(rows):

    ptriangle = [[1], [1, 1]]
    if rows == 1:
        return ptriangle[0]
    else:
        for rownumber in range(2, rows):
            ptriangle.append([1]*rownumber)
            for number in range(1, rownumber):
                ptriangle[rownumber][number] = (ptriangle[rownumber-1][number-1]+ptriangle[rownumber-1][number])                           
                ptriangle[rownumber].append(1)
        return ptriangle

def PrintPascalTriangle(ptriangle):

    largest_element = ptriangle[-1][len(ptriangle[-1]) // 2]
    element_width = len(str(largest_element))
    def format_row(row):
        return ' '.join([str(element).center(element_width) for element in row])
    triangle_width = len(format_row(ptriangle[-1]))
    for row in ptriangle:
        print(format_row(row).center(triangle_width))

rows = input('Enter the number of rows in Pascal`s Triangle: ')
assert (rows > 0),"Number of rows should be greater than zero"
PrintPascalTriangle(PascalTriangle(rows)) 

Tags: innumberforlenreturndefassertelement
2条回答
rows.isdigit()

是一个很好的开始方式,处理非负整数,因此'2'.isdigit()将解析true

我会这样分析:

rows = '1'

if (rows.isdigit() and int(rows) > 0):
    print("success")
else:
    print("fail")

Checked对输入“1”和“a”起作用,返回正确的结果。请记住,逻辑运算是从左到右解析的,因此如果不是数字,则第二部分int(rows) > 0将不会执行。你知道吗

快乐编码

.isdigit()检查输入是否可以是正整数。while not将用户放入一个循环中,直到他输入一个正整数。你知道吗

rows = raw_input("Question")
while not rows.isdigit():
    print"That is not a positive int!"
    rows = raw_input("Question")
rows = int(rows)

相关问题 更多 >