实验三 Python序列类型的使用

一、实验目的

1.掌握序列类型列表,元组和字符串的使用和允许操作。
2.进一步熟悉流程控制语句的使用。

二、实 验 内 容

1.统计输入字符串中单词的个数,单词之间用空格分隔。

代码:

aa=input("请输入字符串:")
bb=aa.split(" ")
print("其中的单词总数有:",len(bb))

运行结果:

2.编写程序,删除一个列表里面的重复元素,将去重后的元素放到新列表中。

代码:

#方法一:列表推导方式
list1=[2,3,2,3,4,5,3]
list2=[]
for item in list1:
    if item not in list2:
        list2.append(item)
print(list2)


#方法二:集合(set)方式
list1=[2,3,2,3,4,5,3]
list2=list(set(list1))#用set中元素不可重复的特性去重
print(list2)
#保持列表元素原来位置
list2.sort(key=list1.index)
print(list2)


#方法三:使用字典的方式,利用字典 key 的唯一性
list1=[2,3,2,3,4,5,3]
list2=list({}.fromkeys(list1).keys())
print(list2)

这里我比较熟悉方法一,用列表推导式来做的:


3.输入一个字符串,将其每个字符的ASCII码形成列表并输出。
提示:使用ord()函数实现将字符转换为Unicode码。

代码:

aa=input("请输入一个字符串:")
bb=[]
for i in aa:
    bb.append(ord(i))
print(bb)

结果运行:


4.输入一个大于2的正整数,找出比它小的所有素数(若它本身也为素数则包括它自己)并放到列表中,然后5个一行输出。

代码:

t=int(input("请输入一个整数(>2):"))
print("小于等于89的所有素数为:")
ls=list()#定义一个列表
m=0
for j in range(2,t+1):#输入数字范围
    count=0
    for i in range(1,j+1): #这里范围是从1到该数本身
        if(j%i==0):#如果只有1和本身能除尽计数2次
            count+=1
    if(count==2):#再判断若2个因数就是素数,否则不是
        ls.append(j)
for n in range(len(ls)):
    print(ls[n],end="    ")
    if (n+1)%5==0:
        print("\n")

结果:


5. 新建一个空列表,向其中添加10名同学的成绩(百分制)。(1)显示此列表中所有成绩的最高成绩,最低成绩,平均成绩;(2)将列表降序排序后,使用切片显示前三名成绩,后三名的成绩,排在第3名到第5名成绩;(3)在列表首部插入一个100分,在尾部追加一个0分;(4)使用切片将此时的列表的后五个数全部替换为60;使用切片删除倒数第1,3,5三个数。
学生成绩可以输入或者用随机函数产生。

代码:

aa=input("请输入成绩:")
a1=aa.split(',')
a1=[int(a1[i])for i in range(len(a1))]
print("10个成绩为:",a1)
print("最高成绩",max(a1))#输出最高成绩
print("最低成绩",min(a1))
m=sum(a1)
m1=m/10
print("平均分为:",m1)
a1.sort(reverse=1)
print("降序排列后10个成绩为:",a1)
print("前三名成绩为",a1[:3])
print("后三名成绩为",a1[-3:-1])
a1[:0]=[100]#在首部插入100分
a1.insert(11,0)#尾部追加0分
print("插入后成绩为",a1)
a1[7:]=[60,60,60,60,60]#替换列表后5个数为60
print("替换后成绩为",a1)
a1.pop()#默认删除最后一个元素
del a1[9:10]#删除倒数第三个数
del a1[7:8]#删除倒数第五个数
print("删除后成绩为",a1)

结果输出:


6. 在列表中存放一首古诗,然后分别用横版和竖版两种形式输出。

代码:

a= ['白日依山尽','黄河入海流','欲穷千里目','更上一层楼']
print("-"*7,"横板","-"*7)
for i in range(0,4):
    print()
    for j in range(0,5):
            print((a[i][j]),end='  ')
print()
print()
print("-"*7,"竖版","-"*7)
for i in range(0,5):
    print()
    for j in range(3,-1,-1):
        print((a[j][i]),end='  ')

结果展示:


7*.用turtle模块采用循环控制实现画五色同心圆,最小圆的半径50,五个圆半径依次增大30。
颜色可存放在元组中。

 代码:

import turtle 
p = turtle.Pen()  #定义画笔对象
#五彩同心圆
R=50
radius=list()
radius.append(50)
for i in range(4):
    R+=30
    radius.append(R)
#radius = [x*10 for x in range(1,10)]
p.width(4)
my_colors = ['blue','black','red','yellow','green']
for r,i in zip(radius,range(len(radius))):
    p.penup()  #抬起画笔
    p.goto(0,-r)
    p.pendown()  #放下画笔
    p.color(my_colors[i%len(my_colors)])
    p.circle(r)
turtle.done() 

 结果展示:

 

 

 

三、实验总结

通过本次实验,我逐步掌握了序列类型列表,元组和字符串的使用和允许操作,并且加深了对列表操作的理解,进一步熟悉了流程控制语句的相关使用。当然,在实验过程中,也遇到了很多问题,如下:

(1)TypeError: 'list' object cannot be interpreted as an integer

这是在做第五题遇到的问题,这是一种类型错误,不能将list对象转换为一个整数,应该为a1.pop(1)。因为pop: 删除单个或多个元素,
按位删除(根据索引删除)。还有这题是让使用切片删除,所以,应使用del a1[11:12]来删除倒数第一个数,后面写法类似,改正后便可正确输出了。

(2)IndexError: list index out of range

出现这种问题,有两种情况。一是list[index]中的index下标超出范围了,所以出现了访问越界;二是list本身就是一个空的,没有一个元素,所以当访问到list[0]的时候,就会出现该错误。

总的来说,本次实验收获很多。我知道了删除列表元素的三种方法:remove,pop,del。remove:是删除单个元素,删除首个符合条件的元素,按值删除;pop: 删除单个或多个元素,按位删除(根据索引删除);del:它是根据索引(元素所在位置)来删除。还有就是使用列表推导式将字符串类型变成整数类型存储到列表中,如第 5道题中将用户输入的成绩多个数值导入给出的空列表中:a1=[int(a1[i])for i in range(len(a1))]。此外,向列表中添加元素有5种方式,如:append(),在列表尾部添加新的元素;“+”运算符操作,创建新的列表对象,但地址会有所变化;extend(),添加到列表尾部,不创建新的列表对象;insert()插入元素,指定元素插入到列表对象的任意位置;乘法扩展等等。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值