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)



