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('请输入字符串:')
sum1 = 1
for i in s:
if i == ' ':
sum1 += 1
print(f'方法一(计算空格数):其中的单词总数有:{sum1}')
list = s.split(' ')
print(f'方法二(以空格分隔形成列表后计算长度):其中的单词总数有:{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(f' 2~{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) # max函数求最大值
minn = min(s) # min函数求最小值
he = sum(s) # sum函数求和
avg = he / n # avg函数求平均值
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)
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 的关键字。
import keyword
a = input('请输入字符串:')
if a in keyword.kwlist: # keyword.kwlist是关键字列表
print(f"{a}是python中的关键字!")
else:
print(f"{a}不是python中的关键字!")
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(f' 2~{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)