教学案例八 列表
1. 计算并显示斐波那契数列
输入n,计算并显示斐波那契数列前n项.一行打印5项,每项显示宽度为6
什么是斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、 因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,每个月的兔子数形成的数为斐波那契额数列 在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
n=eval(input())
#代码开始
s = [1,]
a = 1
b = 1
for i in range(1, n):
if i == 1:
s.append(1)
else:
s.append(s[i-1]+s[i-2])
n = 0
for i in s:
print("{:6d}".format(i),end="")
n+=1
if n % 5 == 0:
print()
#代码结束
2. 整数统计
从键盘输入若干个1-100之间的整数,求这些数的和、个数、平均值、最大值、最小值、中位数和均方差。 若输入0,则输入结束,显示统计结果。若输入不符合要求的数,则显示非法输入,并不将该数计算在内。
1.lb为空列表
2.永真循环 输入x 若x为0则退出循环 若x为1-100的整数则添加到列表lb中 否则显示输入错误
3.输出lb的个数len(lb) 、和sum(lb)、平均值sum(lb)/len(lb)、最小数min(lb)、最大数max(lb)
4.中位数的计算 首先将列表排序 当列表个数为奇数,中位数是序号为列表个数//2的列表项。当列表个数为偶数,中位数是序号为列表个数//2-1的列表项和列表个数//2的列表项的平均值。
5.方差的计算: 对列表的每个数循环,计算其与列表的平均值的差的平方和,除以列表个数则为方差。
列表的统计函数
列表的排序
lb.sort() 方法,将列表lb按升序排列
sorted(lb) 函数会返回一个新的已排序列表,不会修改lb的元素顺序
#代码开始
sum1 = 0
lb = []
min1 = 100
max1 = 0
yh = 0
while True:
x = eval(input("请输入一个整数"))
if x == 0:
break
if 0 <= x <= 100:
lb.append(x)
else:
print("非法输入")
for i in lb:
yh += 1
sum1 += i
min1 = min(min1,i)
max1 = max(max1,i)
lb.sort()
if yh % 2 == 0:
zz = (lb[yh//2] + lb[yh//2-1])/2
else:
zz = lb[yh//2]
pj = sum1 / yh
fc = 0
for i in lb:
fc += (i-pj)**2
fc = fc / yh
print("有效数{}个和{}最大数{}最小数{}平均值{:.2f}".format(yh,sum1,max1,min1,pj))
if yh % 2==0:
print("中位值{:.1f}方差{:.2f}".format(zz,fc))
else:
print("中位值{}方差{:.2f}".format(zz,fc))
#代码结束
3. 统计文档中诗人列表
《唐诗.txt》文本文件中记录了多位诗人的多首诗文。编写程序,按姓名顺序显示所有诗人的姓名,同一个姓氏的诗人显示在一行,并统计诗人个数。
字符串的移除
str.strip(字符); strip() 方法用于移除字符串头尾指定的字符或字符序列,默认为空格和换行符。 例如line.strip()可删除字符串首尾的空格和换行符。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
字符串的截取
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
列表的处理
列表lb的添加 lb.append(元素)
列表lb的排序 lb.sort()
f1=open("sy8//唐诗.txt","r",encoding='gbk')
#代码开始
lb = []
for i in f1.readlines():
i = i.strip("\n")
for j in i:
if j.isdigit()==True:
lb.append(i)
break
lb1 = []
n = 0
for i in lb:
i = i.split(":")[0]
a = i[3:]
n += 1
lb1.append(a)
lb1 = list(set(lb1))
lb1.sort()
count = len(lb1)
for i in range(0,count):
print(i+1,lb1[i],end="")
if i == count-1:
break
if lb1[i][0] != lb1[i+1][0]:
print()
print()
print("共有%d诗人"% count)
f1.close()
#代码结束
4. 股票列表数据的显示
某人将自选股的股票代码存储在列表zxg,股票名称存储在列表gpmc中 zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
编写程序,显示列表中股票的代码和名称
zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
#代码开始
for i in range(len(zxg)):
print(zxg[i],gpmc[i])
#代码结束
5. 股票列表数据的查询
某人将自选股的股票代码存储在列表zxg,股票名称存储在列表gpmc中 zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
编写程序,根据股票代码实现对自选股的查询 输入要查询的股票代码,如果股票代码在列表中,显示对应的股票名称,如果没有在列表中,显示股票不存在
zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
#代码开始
x = input("查询的股票代码")
n = 0
s = 0
for i in zxg:
n += 1
if x == i:
s = 1
break
if s == 1:
print(gpmc[n-1])
else:
print("股票不存在")
#代码结束
6. 股票列表数据的删除
某人将自选股的股票代码存储在列表zxg,股票名称存储在列表gpmc中 zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
编写程序,根据股票代码实现对自选股的删除 输入要删除的股票代码,如果股票代码没有在列表中,显示股票不存在,如果股票代码在列表中,在zxg列表删除该代码,并将gpmc中对应的信息也删除.并显示股票已删除 最后输出两个列表的信息
zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
#代码开始
x = input("删除的股票代码")
n = 0
s = 0
for i in zxg:
s += 1
if x == i:
zxg.remove(i)
n = 1
break
if n == 1:
gpmc.pop(s-1)
print("股票已删除")
else:
print("股票不存在")
#代码结束
for i in range(len(zxg)):
print(zxg[i],gpmc[i])
7. 股票列表数据的增加
某人将自选股的股票代码存储在列表zxg,股票名称存储在列表gpmc中 zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
编写程序,根据股票代码实现对自选股的增加 (1)输入股票代码dm (2)如果股票代码dm在列表zxg中,显示股票已存在。 (3)否则输入股票名称mc。 (4)将代码dm加入列表zxg,将股票名称mc加入列表gpmc。 (5)显示股票已添加 最后输出两个列表的信息
zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
#代码开始
dm = input("增加的股票代码")
n = 0
for i in zxg:
if dm == i:
n = 1
break
if n == 0:
zxg.append(dm)
mc = input("股票名称")
gpmc.append(mc)
print("股票已添加")
else:
print("股票已存在")
#代码结束
for i in range(len(zxg)):
print(zxg[i],gpmc[i])
8. 股票列表数据的管理
编写一个小程序,显示菜单如下
当用户输入选项后,执行相应的操作 直到输入5退出程序
1.定义zxg和gpmc列表
2.显示菜单项
3.使用永真循环 (1)接收用户的选择x (2)如果x是”1”,则执行新增股票的操作 (3)如果x是”2”,则执行删除股票的操作 (4)如果x是”3”,则执行查询股票的操作 (5)如果x是”4”,则执行显示股票的操作 (6)如果x是”5”,则退出循环
zxg=["600030","300059","600053","300339"]
gpmc=["中信证券","东方财富","九鼎投资","润和软件"]
print("1.股票增加2.股票删除3.股票查询4.显示列表5.退出")
#代码开始
while True:
x = input("请输入选择")
if x == "5":
break
elif x == "1":
dm = input("增加股票的代码")
n = 0
for i in zxg:
if dm == i:
n=1
break
if n != 1:
mc = input("股票名称")
zxg.append(dm)
gpmc.append(mc)
print("股票已添加")
else:
print("股票不存在")
elif x == "2":
sc = input("删除股票的代码")
n1 = 0
s = 0
for i in zxg:
s += 1
if sc == i:
zxg.remove(i)
n1 = 1
break
if n1 == 1:
gpmc.pop(s-1)
print("股票已删除")
else:
print("股票不存在")
elif x == "3":
cx = input("查询的股票代码")
n2 = 0
s1 = 0
for i in zxg:
s1 += 1
if cx == i:
n2 = 1
break
if n2 == 1:
print(gpmc[s1-1])
else:
print("股票不存在")
elif x =="4":
for i in range(len(zxg)):
print(zxg[i],gpmc[i])
#代码结束