用户:
程序侯查看: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')
#……
?
当然不是啦,是计算出来,不是打印出来!

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

(这么多废话……)
嗯,开始教学吧!
首先,为了防止设备过卡,要限制一下输出的行数:
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))
看,其实很简单的嘛。
注:别想转化积木,它转化不了!