全民一起玩Python基础篇第四课:复杂结构初步(列表、对象、模块等)(上)

编程入门 行业动态 更新时间:2024-10-27 22:23:02

全民<a href=https://www.elefans.com/category/jswz/34/1745112.html style=一起玩Python基础篇第四课:复杂结构初步(列表、对象、模块等)(上)"/>

全民一起玩Python基础篇第四课:复杂结构初步(列表、对象、模块等)(上)

列表(list)

>>> a=[350,49.23,'锦到黑',103]
# 写在中括号里面,中间用逗号隔开,可以加任意的数据类型
>>> print(a)
[350, 49.23, '锦到黑', 103]
>>> print(a[3])
# 下标从0开始
103
>>> print(a[2])
锦到黑
>>> a[2]
'锦到黑'
>>> print(a[-1])
#倒序插入
103
>>> b=a[2:4]
# 左闭右开的区间
>>> print(b)
['锦到黑', 103]
>>> a[ :4]
# 只给右端点
[350, 49.23, '锦到黑', 103]
>>> a[2:]
# 只给左端点
['锦到黑', 103]

简易的诗词匹配题目

import randomquestions =['白日依山尽,黄河入海流','所守或匪亲,化作狼与豺','春风桃李花开日,秋雨梧桐叶落时','冠盖满京华,斯人独憔悴','会当凌绝顶,一览众山小']
answers=['王之涣','李白','白居易','杜甫','杜甫']
# 列表可以分行书写while 1==1 :
# ctrl+C 强制退出i=random.randint(0,len(questions)-1)#0到4闭区间s=input('请输入' + questions[i] + '的作者:')if s==answers[i]:print('答对了')else :print('答错了!')

一些列表中的运算符

加号

加号可以用来合并两个列表,但不会改变a和b自身

>>> a=['你好','2020']
>>> b=['太难的一年']
>>> a+b
['你好', '2020', '太难的一年']

乘号

>>> a=['你好','2020']
>>> a*3
['你好', '2020', '你好', '2020', '你好', '2020']

打印列表中所有元素

用while

import randomquestions =['白日依山尽,黄河入海流','所守或匪亲,化作狼与豺','春风桃李花开日,秋雨梧桐叶落时','冠盖满京华,斯人独憔悴','会当凌绝顶,一览众山小']
answers=['王之涣','李白','白居易','杜甫','杜甫']
# 列表可以分行书写i=0while i<len(questions):print('题目:',questions[i])i=i+1

用for循环

questions =['白日依山尽,黄河入海流','所守或匪亲,化作狼与豺','春风桃李花开日,秋雨梧桐叶落时','冠盖满京华,斯人独憔悴','会当凌绝顶,一览众山小']
for i in questions :
# 这里的i直接对应的列表中的数据,而不是作为列表的一个索引print('题目:',i)

for语句读取的是列表数据,所以不能使用
i=i+1以2个步长跳转

Range

Range(m,n)

>>> a=range(3,7)

左闭右开,生成了列表,最后一项n-1
或者偷懒简化为
Range(n),从0到n-1的列表

for i in range(1,10,2):print(i)

可以生成步长为2的序列

in操作符

可以用来判断元素是否在列表里面
not in,判断不在里面

answers=['李白','杜甫','白居易']name=input('人名:')if name in answers:print('在里面')
else :print('不在里面')

题目一

请在Python的交互式运行窗口中,完成以下步骤的操作:
手动创建一个列表并赋值给变量(比如x),内容为[17,13,23,3,2,5,11,7,19]。
使用切片操作,从该列表中截取第3个(下标为2)到第7个(编号为6)的片段,并赋值给另一个变量(比如y)。
将两个列表相加,观察结果(无需赋值给任何变量,直接相加即可)。
将第二个列表乘以4,观察结果。
使用Sum函数和Len函数计算第一个列表的平均值。

>>> x=[17,13,23,3,2,5,11,7,19]
>>> y=x[2:7]
>>> x+y
[17, 13, 23, 3, 2, 5, 11, 7, 19, 23, 3, 2, 5, 11]
>>> y=y*2
>>> print(y)
[23, 3, 2, 5, 11, 23, 3, 2, 5, 11]
>>> print(sum(x)/(len(x)+1))
# len后面要+1
10.0
>>> 

题目二

请编写一个程序,能够自动从 “张三、李四、王五、赵六、田七、刘八” 中随机选择一个人,作为中奖者显示在屏幕上。代码要求如下:
使用列表存放人名,人名和数量可以自己随意安排。
尽可能让程序具备灵活性,比如向列表中添加、删除人名时,不需要修改与列表无关的代码。
有兴趣的同学可以搜索一下 random模块的choice函数,然后重写本程序。

import random
answers=['李白','杜甫','白居易']
a=random.randint(0,len(answers)-1)
print('获奖者是',answers[a])

请使用for循环和range扩充“练习2”中的抽奖程序,使之每次运行均能连续输出3个中奖者名字(允许一人重复获奖)。输出效果类似下面的形式:
1等奖:王五
2等奖:田七
3等奖:王五

import random
answers=['李白','杜甫','白居易','杜牧','李商隐']
for i in range(3):a=random.randint(0,len(answers)-1)print('获',i+1,'等奖者是',answers[a])

题目三

请编写程序,使之能够找出两个列表中共同存在的所有元素,并打印在屏幕上。这两个列表可以自己随意指定。
比如,假设在程序中定义了两个列表:[3,5,‘a’,10,9,‘b’] 和 [‘c’,4,3,‘a’] ,那么程序运行结果如下所示:
共同元素包括:
3
a

a=[3,5,'a',10,9,'b']
b=['c',4,3,'a']
print('共同元素有:')
for i in a :for k in b :if k==i:print(k)
#或者可以直接写
'''           
for i in a:if i in b:print(i)
'''

列表对象

向列表添加元素可以用两种方法
一个是给自己赋值

>>> a=[1,2,3]
>>> a=a+[4]
>>> print(a)
[1, 2, 3, 4]

另一个是用列表对象的属性

>>> a=[1,2]
>>> a.append(4)
>>> print(a)
[1, 2, 4]

或者是用extend
常用的几个类对象的方法

count

>>> x=[1,3,4,3,1,1,1]
>>> x.count(1)
4

index

返回某个元素第一次出现的位置
用于查找

>>> x=[1,3,4,3,1,1,1]
>>> x.index(3)
1

找到所有符合要求的

list1=[123,123,123,456,123]
i = 0
for each in list1:if each==123:print(list1.index(each,i))i+=1

pop和remove、DEL

pop删除某一下标的元素,remove直接针对元素

>>> x=[1,3,4,3,1,1,1]
>>> x.pop(4)
1
>>> print(x)
[1, 3, 4, 3, 1, 1]
[1, 3, 4, 3, 1, 1]
>>> x.remove(3)
>>> print(x)
[1, 4, 3, 1, 1]
del member[1]
#也可以直接删整个列表
del member

insert 和 reverse

>>> x.insert(0,100)
>>> print(x)
[100, 1, 4, 3, 1, 1]
>>> x.reverse()
>>> print(x)
[1, 1, 3, 4, 1, 100]

sort

默认从小到大

>>> x.sort()
>>> print(x)
[1, 1, 1, 3, 4, 100]

可以在Python交互式窗口中输入 help(类名或对象) ,即可查看该类的简要文档说明(如果存在)。

题目一

请在Python的交互式运行窗口中,完成以下步骤的操作:
手动创建一个列表并赋值给变量(比如x),内容为 [‘周一’,‘Mon’,‘周二’,‘Tue’,‘周三’,‘Wed’,‘周四’,‘Thu’,‘周五’,‘Fri’,‘周六’,‘Sat’,‘周日’,‘Sun’] 。
使用切片操作,从该列表中截取出所有中文星期名称,构成一个新列表。
同上,使用切片从该列表中截取出所有英文星期名称,构成一个新列表。
观察原列表内容是否发生变化。


>>> x= ['周一','Mon','周二','Tue','周三','Wed','周四','Thu','周五','Fri','周六','Sat','周日','Sun']
>>> y=x[0::2]
>>> z=x[1::2]
>>> print(y,z)
['周一', '周二', '周三', '周四', '周五', '周六', '周日'] ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

题目二

请编写一个程序,运行后允许用户连续录入多个姓名,直到录入 “END” 为止。然后该程序能够把用户输入的所有姓名显示在屏幕上,并告知一共输入了多少名字。
具体效果示例如下:

>>> ==== RESTART: D:/Demo/test.py =====
请输入一个姓名:张三
请输入一个姓名:李四
请输入一个姓名:王五
请输入一个姓名:赵六
请输入一个姓名:END
您一共输入了 4 个姓名:
张三
李四
王五赵六
>>> 
a=[]while True:x=input('请输入一个姓名')if x=='END':breaka.append(x)print('一共输入了',len(a),'个姓名')
for j in a:print(j)

题目三

请在 “作业2:录入姓名” 的基础上改编程序,即:运行后允许用户连续录入多个姓名,直到录入 “END” 为止。然后该程序能够从录入的名字中随机抽取一人,作为中奖者显示在屏幕上。
具体效果示例如下:

>>> ==== RESTART: D:/Demo/test.py =====
请输入一个姓名:张三
请输入一个姓名:李四
请输入一个姓名:王五
请输入一个姓名:赵六
请输入一个姓名:END
您一共输入了 4 个姓名,其中中奖者为:
王五
>>> 
import random
a=[]while True:x=input('请输入一个姓名')if x=='END':breaka.append(x)
i=len(a)   
print('一共输入了',i,'个姓名')
for j in a:print(j)
c=random.randint(0,i-1)
# random是闭区间
print('其中中奖的同学为',a[c])

题目四

运行后允许用户连续录入多个姓名,直到录入 “END” 为止。然后该程序能够从录入的名字中随机抽取占总数 1/2 的个人,作为中奖者显示在屏幕上。但是请注意:不允许重复抽奖,每个人名只能被抽中一次!
具体效果示例如下:

>>> ==== RESTART: D:/Demo/test.py =====
请输入一个姓名:张三
请输入一个姓名:李四
请输入一个姓名:王五
请输入一个姓名:赵六
请输入一个姓名:田七
请输入一个姓名:刘八
请输入一个姓名:END
您一共输入了 6 个姓名,其中中奖者为:
王五
田七
李四
>>> 
import randomname_list = []s = ''
while s!='END':s = input('请输入一个姓名:')name_list.append( s )name_list.remove('END')t = len(name_list)print( '共输入',t , '个姓名,中奖者是:')for i in range(0,t//2):
# //表示整除x = random.randint(0,len(name_list)-1)print( name_list[x] )name_list.pop(x)

更多推荐

全民一起玩Python基础篇第四课:复杂结构初步(列表、对象、模块等)(上)

本文发布于:2024-02-12 09:31:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1687219.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:一起玩   全民   模块   对象   结构

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!