栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

实验三 Python 组合数据类型

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实验三 Python 组合数据类型

1. 创建列表以列表 list1 = ["life", "is", "short"] 和 list2 = ["You", "need", "python"],并完成以下任务:

(1)输出 list1 中的第一个元素 life 及其索引(下标)。

(2)在 short 后面增加一个!

list1=["life","is","short"]
list2=["You","need","python"]
print(list1[0],'下标:',list1.index('life'))
list1.append('!')
print(list1)

2. 编写程序,将列表 s=[9,7,8,3,2,1,5,6]中的偶数变成它的平方,奇数保持不变。

其运行效果如下图所示。

提示:可以利用“if(s[i]%2==0”的语句形式判断列表中的第 i 个元素是否为偶数。

s=[9,7,8,3,2,1,5,6]
for i in range(len(s)):
    if s[i]%2==0:
        s[i]=s[i]*s[i]
print(s)

3. 分别使用 if 和 while 语句删除将列表 x = [1,2,1,2,1,1,1]中的元素“1” 全部删除。

x=[1,2,1,2,1,1,1]
print('x=',x)
y=x[:]     #在y列表中操作而非x
for i in y:       
    if i==1:
        x.remove(i)
print('   if语句:',x)

x=[1,2,1,2,1,1,1]
while 1 in x:
    x.remove(1)
print('while语句:',x)

4. 编写程序,删除一个 list 里面的重复元素,即所有元素不重复。

提示:可以利用 s. append(x)方法把对象 x 追加到列表 s 的尾部。

list=eval(input('请输入列表:'))
s=set(list)  #通过创建集合,去重
print('方法一:',s)

s=[]
for i in range(len(list)):
    if list[i] not in s:
        s.append(list[i])
print('方法二:',s)

5. (选做)统计所输入字符串中单词的个数,单词之间用空格分隔。其运行效果如下图所示。

s=input('请输入字符串:')
sum=1
for i in s:
    if i==' ':
        sum+=1
print('方法一:',end='')
print('其中的单词总数有:',sum)

list=s.split(' ')
print('方法二:',end='')
print('其中的单词总数有:',len(list))

6. 编写程序,输入字符串,将其每个字符的 ASCI 码形成列表并输出, 运行效果如下图所示。

提示:  (1)使用 ord(s[i])方法(ord()函数主要用来返回对应字符的 ascii 码)将字符转换为对应的 Unicode 码。

(2)使用 s. append(x)方法将对象 x 追加到列表 s 的尾部。

a=input('请输入一个字符串:')
s=[]
for i in range(len(a)):
    x=ord(a[i])
    s.append(x)
print(s)

7. (选做) 创建列表,内容为 a-z、A~Z 和 0-9,从中随机抽出 6 个字符作为验证码。

提示:使用 ASCII 值和 chr 函数(chr()主要用来表示 ascii 码对应的字符他的输入时数字,可以用十进制,也可以用十六进制)生成大小写字母或 string 库。

import random
lists=[]
list1=[chr(i) for i in range(97,123)]#a~z十进制ASCII码为97~122
lists.extend(list1)
list2=[chr(i) for i in range(65,91)]#A~Z十进制ASCII码为65~90
lists.extend(list2)
list3=list(range(10))
lists.extend(list3)
  #将内容全部放入lists列表
code=[]
for i in range(6):
    x=random.randint(0,len(lists))
    code.append(lists[x])
print("验证码:",end='')
print(''.join(map(str,code)))#直接连接,不插入任何连接符

8. 使用 列表 实现 筛选法 求 素数。

提示:素数判断方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数, 反之是素数。

import math
sushu=[]
a=int(input('请输入一个正整数:'))
if a>2:
    for i in range(2,a+1):
        flag=True
        for j in range(2,int(math.sqrt(i)+1)):
            if i%j == 0:
                flag=False
                break
        if flag:
            sushu.append(i)
    print(' 2~{} 素数列表:'.format(a),sushu)
else:
    int(input('请重新输入'))

9. 编写程序,求列表 s=[9,7,8,3,2,1,55,6]中的元素个数、最大值、最小值,以及元素之和、平均值。请思考有哪几种实现方法?

提示:可以分别利用 for 循环、 while 循环、直接访问列表元素( for i in s…)、间接访间列表元素( for i in range(O,len(s))…)、正序访问 (i=0; while i=0…)以及 while True:… break 等方法。

s=[9,7,8,3,2,1,55,6]
n=len(s)
maxx=max(s)
minn=min(s)
he=sum(s)
avg=he/n
print('元素个数:',n)
print('最大值:',maxx)
print('最小值:',minn)
print('元素之和:',he)
print('平均值:',avg)

10.创建一个空字典 student,录入学生姓名和成绩,并一一对应,当所有学生的信息录入完之后,输入 1 退出。需要注意的是(学生成绩范围 为 0~150)超出范围重新输入。

提示:使用 dict 函数和 zip 函数

student={}
sname=[]
sgrade=[]
prime=0
while prime==0:
    name=input("请输入学生姓名:") #键
    sname.append(name)
    grade=eval(input("请输入学生成绩:"))#值
    if grade>0 and grade<150: 
        sgrade.append(grade)
    else:
        print("超出范围,请重新输入:")
    prime=int(input('输入1退出,输入0继续输入:'))
student=dict(zip(sname,sgrade))
print("学生姓名和成绩:",student)

11.自己编写一个长度至少五 5 的字典,其中姓名为键和性别为值;请编写一个程序,删除性别为男的员工信息。

employees={'A':'男','B':'女','C':'男','D':'女','E':'男'}#自定义字典
print("删除前:",employees)
nex={}
ename=[]#键
esex=[]#值
k=employees.keys()
v=employees.values()
for i in k:
    ename.append(i)
for j in v:
    esex.append(j)
for n in esex:
    if(n=='男'):
        x=esex.index('男')#x标记值‘男’的下标位置,(值与键下标一致)
        esex.remove('男')
        ename.remove(ename[x])#姓名一列中删除下标为‘男’的键
new=dict(zip(ename,esex))
print("删除后:",new)

12.(选做)请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生的信息。提示:使用 sorted 函数并指定其对应的参数 key 的值。

student_old={}
sno_old=[]#学号为键
sname_old=[]#姓名为值
prime=0
while prime==0:
    number=int(input("请输入学生学号:")) #键
    sno_old.append(number)
    name=input("请输入学生姓名:")#值
    sname_old.append(name)
    prime=int(input('输入1退出,输入0继续输入:'))
student_old=dict(zip(sno_old,sname_old))
student_new={}
sno_new=[]#学号为键
sname_new=[]#姓名为值
sno_new=sorted(sno_old)
for i in sno_new:
    sname_new.append(student_old[i])#_old[i]是指i键对应的值,使值形成新列表
student_new=dict(zip(sno_new,sname_new))
print("排序后:",student_new)

13.(选做)请编写一个程序,用于统计字符串中每个字母的出现次数(字母忽略大小写,a 和 A 看是作一个字母), 统计出的结果,请按照 [‘a’:3,’b’:2] 的格式输出。

提示:可以使用 chr 函数将字母变为整数,然后利用整数值的大小进行判定。

s_old=input("请输入字符串:")
ele=[]
num=[]
print(s_old)
s=str.lower(s_old) #大写转换为小写
for i in s:
    if i not in ele:
        ele.append(i)
        num=1
    else:
        num+=1
s_new=dict(zip(ele,num))
print("字母及其出现次数:",s_new)

14. 使用元组创建一个存储 Python 关键字的对象,并利用 input 函数输入任何一个字符串,来检测输入的单词是否是 Python 的关键字。

key={'False','None','True','and','as','assert','break','class',
'continue','def','del','elif','else','except','finally','for',
'from','global','if','import','in','is','lambda','nonlocal','not',
'or','pass','raise','return','try','while','with','yield'}#Python 33关键字
a=input('请输入字符串:')
if a in key:
    print("{}是python中的关键字!".format(a))
else:
    print("{}不是python中的关键字!".format(a))

15. 使用 集合 实现筛选法求 素数。

方法一:

# 使用集合实现筛选法求素数
import math
sushu=set()
a=int(input('请输入一个正整数:'))
if a>2:
    for i in range(2,a+1):
        flag=True
        for j in range(2,int(math.sqrt(i)+1)):
            if i%j == 0:
                flag=False
                break
        if flag:
            sushu.add(i)
    print(' 2~{} 素数集合:'.format(a),sushu)
else:
    int(input('请重新输入'))

方法二:

# 使用集合实现筛选法求素数
import math
num = int(input("请输入大于2的自然数:"))
number = set(range(2,num))
m=int(math.sqrt(num)+1)
a =[p for p in range(2, m) if 0 not in [p%d for d in range(2, int(math.sqrt(p) + 1))]]
for p in a:
    for i in range(2,(num//p)+1): #//为整数除法
        number.discard(i*p)
print(number)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/619351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号