文章目录
- 一.字符串相关案例
- 1.输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)
- 2.输入用户名,判断用户名是否合法,用户名的要求: 长度为6~10位
- 3.输入字符串,获取字符串的中间字符
- 4.输入字符串,将字符串的开头和结尾变成'+',产生一个新的字符串
- 5.输入用户名,判断是否合法,用户名的要求:用户名中只能由数字和字母组成
- 6.输入一个字符串,将字符串中所有的数字符取出来产生一个新的字符串
- 7.输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出
- 8.输入用户名,判断用户名是否合法,用户名的要求:必须有数字和字母且只能有数字和字母,并且第一个字符是大写字母
- 9.输入一个字符串,将字符串中所有的大写字母变成对应的小写字母输出
- 10.输入两个字符串,打印第二个字符串在第一个字符串中第一次出现的位置
- 11.输入两个字符串,打印两个字符串中公共的字符,如果没有公共字符打印 公共字符不存在
- 二.列表相关案例
- 1. 已知一个列表 names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香'],编写程序用两种方法获取names中的元素'黄忠'。
- 2.已知一个数字列表,输出所有元素中,值为奇数的元素。
- 3.已知一个列表 scores = [90, 89, 67, 98, 75, 87, 54, 88],输入两个成绩,一个添加到scores的最后,另一个插入到scores的最前面。
- 4.已知一个数字列表, 编写程序将列表中所有元素乘以2
- 5.有一个数字列表,获取这个列表中的最大值(注意: 不能使用max函数)
- 6.已知一个数字列表,获取列表中出现次数最多的元素
- 7.已知一个列表中保存的全是学生的姓名,要求去掉重复的名字
- 三.字典元组相关案例
一.字符串相关案例
1.输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)
方法一:
利⽤字符串切⽚:字符串[开始下标:结束下标:步⻓],开始下标是1步⻓为2,结束下标省略可以取到最后。
str1 = input('请输⼊⼀个字符串:')
print(str1[1::2])
方法二:
利⽤for循环将所有的奇数下标取出来,然后根据下标获取字符
str1 = input('请输入一个字符串:')
# print(str1[1::2])
str_len = len(str1)
for index in range(str_len):
if index % 2 == 1:
print(str1[index], end='') # 设置end让所有的字符在⼀⾏打印
方法三:
和⽅法⼆的原理⼀样,利⽤range直接产⽣奇数下标。
str1 = input('请输入一个字符串:')
str_len = len(str1)
for index in range(1, str_len, 2):
print(str1[index], end='')
运行结果:
请输入一个字符串:qwert
wr
2.输入用户名,判断用户名是否合法,用户名的要求: 长度为6~10位
x = input('请输入用户名:')
y = len(x)
if 6 <= y <= 10:
print('用户名合法')
else:
print('用户名不合法!')
运行结果:
请输入用户名:asd
用户名不合法!
3.输入字符串,获取字符串的中间字符
方法一:
x = input('请输入一个字符串:')
y = len(x)
if y % 2 == 0:
print(x[y // 2 - 1:y // 2 + 1])
else:
print(x[y // 2])
方法二:
x = input('请输⼊字符串:')
y = len(x)
if y % 2 == 0:
print(x[y // 2 - 1], x[y // 2], sep='')
else:
print(x[y // 2])
运行结果:
请输⼊字符串:abc123
c1
4.输入字符串,将字符串的开头和结尾变成’+’,产生一个新的字符串
方法一:
x = input('请输入一个字符串:')
y = x.replace(x[0], '+')
z = y.replace(y[len(y) - 1], '+')
print(z)
方法二:
str1 = input('请输⼊字符串:')
new_str = '+' + str1[1:-1] + '+'
print(new_str)
运行结果:
请输入一个字符串:qwer13
+wer1+
5.输入用户名,判断是否合法,用户名的要求:用户名中只能由数字和字母组成
方法一:
x=input('请输入用户名:')
if x.isalnum():
print('用户名合法')
else:
print('用户名不合法!')
方法二:
x = input('请输入用户名:')
for char in x:
if not (char.isdigit() or char.isalpha()): ## 如果不是字⺟和数字
print('用户名不合法')
break
else:
print('用户名合法!')
方法三:
x = input('请输⼊⽤户名:')
for char in x:
# 如果不是字⺟和数字
if not ('a' <= char <= 'z' or 'A' <= char <= 'Z' or '0' <= char <= '9'):
print('⽤户名不合法')
break
else:
print('⽤户名合法')
运行结果:
请输入用户名:ad_fga445
用户名不合法!
6.输入一个字符串,将字符串中所有的数字符取出来产生一个新的字符串
方法一:
str1 = input('请输入一个字符串:')
# 先声明⼀个空的字符串⽤来拼接数字字符
new_str = ''
for i in range(0, len(str1)):
# 如果是数字字符就拼接到new_str上
if '0' <= str1[i] <= '9':
new_str += str1[i]
print(new_str)
方法二:
str1 = input('请输⼊⼀个字符串:')
new_str = ''
for i in str1:
if '0' <= i <= '9':
new_str += i
print(new_str)
方法三:
str1 = input('请输⼊⼀个字符串:')
new_str = ''
for i in str1:
if i.isdigit():
new_str += i
print(new_str)
运行结果:
请输入一个字符串:uyiytd1564
1564
7.输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出
方法一:
x = input('请输入一个字符串:')
y = x.upper()
print(y)
方法二:
str1 = input('请输⼊⼀个字符串:')
new_str = ''
# 遍历字符串中的字符
for i in str1:
# 如果是⼩写字⺟就转换成⼤写字⺟后再拼接
#⼩写字⺟的编码值⽐对应的⼤写字⺟的编码值要⼤32
if 'a' <= i <= 'z':
# ord(字符) -- 获取字符的编码值
# chr(字符编码) -- 获取编码对应的字符
new_str += chr(ord(i) - 32)
else:
# 如果不是⼩写字符就直接拼接到新的字符串中
new_str += i
print(new_str)
运行结果:
请输入一个字符串:afe123
AFE123
8.输入用户名,判断用户名是否合法,用户名的要求:必须有数字和字母且只能有数字和字母,并且第一个字符是大写字母
方法一:
x = input('请输入一个字符串:')
for i in range(len(x)):
if '0' <= x[i] <= '9' and 'A' <= x[0] <= 'Z':
print('用户名合法')
break
else:
print('用户名不合法')
方法二:
user_name = input('请输⼊⽤户名:')
# 先判断第⼀个字符是否是⼤写字⺟
if user_name[0].isupper():
# 如果第⼀个字符是⼤写字⺟,再看后⾯的字符中是否有不合法的字符,并且统计后⾯的字符中有没有数字
have_number = False # 假设没有数字字符
for item in user_name[1:]:
# 如果是数字或者字⺟
if item.isdigit() or item.isalpha():
# 如果有数字字符,那么have_number就是True
if item.isdigit():
have_number = True
else:
# 如果出现了⾮数字、字⺟的字符
print('不合法')
break # 只要有⼀个⾮法的字符就不合法,不需要再判断其他字符
else:
if have_number:
print('合法')
else:
print('不合法')
运行结果:
请输入一个字符串:GGf
用户名不合法
9.输入一个字符串,将字符串中所有的大写字母变成对应的小写字母输出
x = input('请输入一个字符串:')
y = x.lower()
print(y)
运行结果:
请输入一个字符串:dsdHII12
dsdhii12
10.输入两个字符串,打印第二个字符串在第一个字符串中第一次出现的位置
位置用正索引值表示
方法一:
x = input('请输入第一个字符串:')
y = input('请输入第二个字符串:')
if y in x:
z=x.find(y[0]) #利用find函数进行查找
print(z)
else:
print('不存在')
方法二:
str1 = input('请输⼊字符串1:')
str2 = input('请输⼊字符串2:')
len1 = len(str1)
len2 = len(str2)
for index in range(len1 - len2 + 1):
if str1[index:index + len2] == str2:
print(index)
break
else:
print('不存在')
运行结果:
请输入第一个字符串:I am cool
请输入第二个字符串:cool
5
11.输入两个字符串,打印两个字符串中公共的字符,如果没有公共字符打印 公共字符不存在
方法一:
x = input('请输入第一个字符串:')
y = input('请输入第二个字符串:')
z = ''
for i in range(len(x)):
for j in range(len(y)):
if x[i] == y[j]:
z += y[j]
if z == '':
print('公共字符不存在!')
else:
print(z)
方法二:
str1 = input('请输⼊字符串1:')
str2 = input('请输⼊字符串2:')
new_str = '' # ⽤来拼接公共的字符
# 遍历字符串1中的每个字符
for item in str1:
# 判断当前取出来的字符字符串2中是否也存在; 并且之前没有保存过
if item in str2 and item not in new_str:
new_str += item
if new_str:
print(new_str)
else:
print('公共字符不存在')
方法三:
str1 = input('请输⼊字符串1:')
str2 = input('请输⼊字符串2:')
new_str = '' # ⽤来拼接公共的字符
# 保证遍历的时候遍历较短的字符串
if len(str2) < len(str1):
str1, str2 = str2, str1
# 遍历字符串1中的每个字符
for item in str1:
# 判断当前取出来的字符字符串2中是否也存在; 并且之前没有保存过
if item in str2 and item not in new_str:
new_str += item
if new_str:
print(new_str)
else:
print('公共字符不存在')
运行结果:
请输入第一个字符串:qwer
请输入第二个字符串:er
er
二.列表相关案例
1. 已知一个列表 names = [‘鲁班七号’, ‘后裔’, ‘狄仁杰’, ‘黄忠’, ‘孙尚香’],编写程序用两种方法获取names中的元素’黄忠’。
方法一:
names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香']
print(names[3])
方法二:
names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香']
print(names[-2])
方法三:
names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香']
if names.index('黄忠'):
print('黄忠')
else:
print('黄忠不存在')
方法四:
names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香']
if '黄忠' in names:
print('黄忠')
else:
print('黄忠不存在')
2.已知一个数字列表,输出所有元素中,值为奇数的元素。
x = [1, 7, 3, 4, 5, 6, 11, 13]
for i in range(len(x)):
if x[i] % 2 != 0:
print(x[i], end=' ')
运行结果:
1 7 3 5 11 13
3.已知一个列表 scores = [90, 89, 67, 98, 75, 87, 54, 88],输入两个成绩,一个添加到scores的最后,另一个插入到scores的最前面。
scores = [90, 89, 67, 98, 75, 87, 54, 88]
score1 = int(input('请输入成绩:'))
score2 = int(input('请输入成绩:'))
scores.append(score1)
scores.insert(0, score2)
print(scores)
运行结果:
请输入成绩:99
请输入成绩:98
[98, 90, 89, 67, 98, 75, 87, 54, 88, 99]
4.已知一个数字列表, 编写程序将列表中所有元素乘以2
nums = [1, 2, 3, 4]
y = []
for i in range(len(nums)):
x = nums[i] * 2
y.append(x)
print('nums=', y)
运行结果:
nums= [2, 4, 6, 8]
5.有一个数字列表,获取这个列表中的最大值(注意: 不能使用max函数)
方法一:
nums =[1,3,4,2,6,8,9,5,7]
nums.sort()
print(nums[len(nums)-1])
方法二:
numbers = [1, 3, 4, 2, 6, 8, 9, 5, 7]
max_num = numbers[0]
for n in numbers:
if n > max_num:
max_num = n
print(max_num)
运行结果:
9
6.已知一个数字列表,获取列表中出现次数最多的元素
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
dic = {}
for n in nums:
if n in dic:
dic[n] += 1
else:
dic[n] = 0
max_count = max(dic.values())
for k, v in dic.items():
if max_count == v:
print(k)
运行结果:
3
7.已知一个列表中保存的全是学生的姓名,要求去掉重复的名字
方法一:
names = ['张三', '李四', '大黄', '张三', '大黄', '王五', '张三']
s = set()
for i in range(len(names)):
s.add(names[i])
names = list(s)
print(names)
方法二:
names = ['张三', '李四', '大黄', '张三', '大黄', '王五', '张三']
names2 = []
for n in names:
if n not in names2:
names2.append(n)
names = names2
print(names)
运行结果:
[‘张三’, ‘李四’, ‘大黄’, ‘王五’]
三.字典元组相关案例
1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
sudent = {'name': '张三 ', 'age': 20, 'socre': 98, 'tel': '123456789', 'sex': '男'}
for k, v in sudent.items():
print(k, ':', v, end=' ')
运行结果:
name : 张三 age : 20 socre : 98 tel : 123456789 sex : 男
2.声明一个列表,在列表中保存6个学生的信息
(1) 统计不及格学生的个数
(2) 打印不及格学生的名字和对应的成绩
(3) 统计未成年学生的个数
(4) 打印手机尾号是8的学生的名字
(5) 打印最高分和对应的学生的名字
(6) 删除性别不明的所有学生
(7) 将列表按学生成绩从大到小排序
students = [{'name': '源一', 'age': 21, 'socre': 45, 'tel': '12345678911', 'sex': '男'},
{'name': '源二', 'age': 22, 'socre': 92, 'tel': '12556866828', 'sex': '女'},
{'name': '源三', 'age': 16, 'socre': 93, 'tel': '12345678913', 'sex': '男'},
{'name': '源四', 'age': 24, 'socre': 50, 'tel': '12345678914', 'sex': '女'},
{'name': '源五', 'age': 17, 'socre': 95, 'tel': '12345678916', 'sex': '不明'},
{'name': '源六', 'age': 17, 'socre': 96, 'tel': '12345678917', 'sex': '不明'}]
(1) 统计不及格学生的个数:
student_count = 0
for student in students:
if student['socre'] < 60:
student_count += 1
print(student_count)
(2) 打印不及格学生的名字和对应的成绩
for student in students:
if student['socre'] < 60:
print('不及格学生:',student['name'],'对应成绩:',student['socre'])
(3) 统计未成年学生的个数
student_count = 0
for student in students:
if student['age'] < 18:
student_count += 1
print(student_count)
(4) 打印手机尾号是8的学生的名字
for student in students:
if student['tel'][-1]=='8':
print(student['name'])
(5) 打印最高分和对应的学生的名字
max_socre = 0
student1 =''
for student in students:
if student['socre'] >= max_socre:
max_socre = student['socre']
student1 = student['name']
print('最高分为:',max_socre,'对应学生:',student1)
(6) 删除性别不明的所有学生
for student in students:
if student['sex'] == '不明':
student.clear()
print('删除性别不明的所有学生:',students)
(7) 将列表按学生成绩从大到小排序
方法一:
x = []
for student in students:
x.append(student['socre'])
for i in range(len(x)):
for j in range(i + 1, len(x)):
if x[i] < x[j]:
x[i], x[j] = x[j], x[i]
students[i], students[j] = students[j], students[i]
print(students)
方法二:
students.sort(key=lambda item: item['socre'], reverse=True)
print(students)
3.用三个元组表示三门学科的选课学生姓名(一个学生可以同时选多门课)
(1) 求选课学生总共有多少人
(2) 求只选了第一个学科的人的数量和对应的名字
(3) 求只选了一门学科的学生的数量和对应的名字
(4) 求只选了两门学科的学生的数量和对应的名字
(5) 求选了三门学生的学生的数量和对应的名字
sing = ('李白', '白居易', '李清照', '杜甫', '王昌龄', '王维', '孟浩然', '王安石')
dance = ('李商隐', '杜甫', '李白', '白居易', '岑参', '王昌龄')
rap = ('李清照', '刘禹锡', '岑参', '王昌龄', '苏轼', '王维', '李白')
(1) 求选课学生总共有多少人
total = set(sing + dance + rap)
print(len(total))
(2) 求只选了第一个学科的人的数量和对应的名字
sing_only = []
for p in sing:
if p not in dance and p not in rap:
sing_only.append(p)
print('只选择了第一个学科的有{}人,是{}'.format(len(sing_only), sing_only))
(3) 求只选了一门学科的学生的数量和对应的名字
only_one = []
# 只选了sing的
for s in sing:
if (s not in dance) and (s not in rap):
only_one.append(s)
# 只选了dance的
for d in dance:
if (d not in sing) and (d not in rap):
only_one.append(d)
# 只选了rap的
for r in rap:
if (r not in sing) and (r not in rap):
only_one.append(r)
print('只选了⼀⻔学科的有{}⼈:{}'.format(len(only_one), only_one))
(4) 求只选了两门学科的学生的数量和对应的名字
two_only = []
for s in sing:
# 只选了sing和dance的
if (s in dance) and (s not in rap):
two_only.append(s)
# 只选了sing和rap的
elif (s not in dance) and (s in rap):
two_only.append(s)
for d in dance:
# 只选了dance和rap的
if (d in rap) and (d not in sing):
two_only.append(d)
print('只选了两⻔学科的有{}⼈:{}'.format(len(two_only), two_only))
(5) 求选了三门学生的学生的数量和对应的名字
three = []
for s in sing:
if s in dance and s in rap:
three.append(s)
print('选了三⻔学科的有{}⼈:{}'.format(len(three), three))