猫史档案馆


【Python作品分享】杨辉三角【教程贴】

用户:程序侯程序侯查看:0 回复:4 评论:0 创建时间:2020-04-13T21:17:16


1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

……………………

 

咦,怎么出现了一个三角形?嘿嘿,你知道他是啥么?这是著名的杨辉三角!

那,你信不信,可以用Python计算出一个杨辉三角?

——?,难道是……

print('1')
print('1 1')
print('1 2 1')
#……

当然不是啦,是计算出来,不是打印出来!

emotion_雷电猴_围观

围观个啥,你先把编辑器搬出来!

emotion_雷电猴_嗯嗯

(这么多废话……)

嗯,开始教学吧!

 

首先,为了防止设备过卡,要限制一下输出的行数:

import turtle
num = int(turtle.numinput('计算几行?', '(输入小数会自动向下取整;输入小于1的数会默认为1)'))

嗯没错,在不用画图的时候,用不着设置画笔!

接着就要开始计算了:

#先不放代码

首先,为了防止计算时重复执行负数次,用个如果否则:

if (num <= 1):
    print(1)
elif (num == 2):
    print(1)
    print('1 1')
else:
    print(1)
    print('1 1')

接着就要——开(考)始(验)计(实)算(力)了!

首先,定义列表了l,它的值是[1, 1]:

l = [1, 1]

定义一个函数count:

def count(l):
    value = [1]
    for num in range(len(l) - 1):
        value.append(l[num] + l[num + 1])
    return value + [1]

注意:这串代码前面必须有一个缩进,因为他们是放在else里面的。

首先将返回值设为列表1,接着用一个序号变量遍历l的长度减一,也就是零到l的长度减二。再依次加入和,最后返回这个返回值加上1。

还要定义一个join函数,是用来链接列表中的项的:

def join(l):
    velue = str(l[0])
    for num in range(1, len(l)):
        velue = velue + ' ' + str(l[num])
    return velue

当然这也在else里面。

注意:你不能使用' '.join(l),因为他只能连接字符串,而列表中的项都是数字。至于为啥,我懒得讲。重点不在这。

接下来,就要开始计算了。由于一开始已经打印了两行,所以可以少重复执行两次:

for i in range(num - 1):
    l = count(l)
    print(join(l))
至此,程序就编写完了。 最后,附上整个程序的代码:
#这是一个用来计算杨辉三角的程序,杨辉三角大概是这样的:
#1
#1 1
#1 2 1
#1 3 3 1
#1 4 6 4 1

#程序开始执行
#确定输出的行数
import turtle
num = int(turtle.numinput('计算几行?', '(输入小数会自动向下取整;输入小于1的数会默认为1)'))  # 不要出入太大的数哦,会很卡的,并且也很杂乱
print('\n\n\n')  # 三个换行,代表要开始计算了
#下面的如果否则是为了避免出入1或是小于1时重复执行负数或零次
if (num <= 1):
    print(1)
elif (num == 2):
    print(1)
    print('1 1')
else:
    print(1)
    print('1 1')
    l = [1, 1]

    def count(l):  # 这个函数用来计算
        value = [1]
        for num in range(len(l) - 1):
            value.append(l[num] + l[num + 1])
        return value + [1]

    def join(l):
        velue = str(l[0])
        for num in range(1, len(l)):
            velue = velue + ' ' + str(l[num])
        return velue
    #对了,之所以限制次数,是为了避免设备过卡。该程序没有time.sleep(0.1)这样的代码。
    for i in range(num - 1):
        l = count(l)
        print(join(l))
​

看,其实很简单的嘛。

 

注:别想转化积木,它转化不了!


回复

上一页1 页 / 共 1下一页
浅眠O_o浅眠O_o

沙发

点赞0


评论


浅眠O_o浅眠O_o

棒棒

 

点赞0


评论


浅眠O_o浅眠O_o

在吗

点赞0


评论


浅眠O_o浅眠O_o

顶顶

点赞0


评论