1.求列表元素和
num = sum(range(0,10))
print(num)
45
2.输出奇数索引元素
num = [2,5,8,1,5,8,9,3,6]
print(num[1::2])
[5, 1, 8, 3]
3.输出列表中奇数
num = [1,3,7,9,2,5,8,3,7,8,3,6,9,5]
for i in num:
if i%2==1:
print(i,end=',')
1,3,7,9,5,3,7,3,9,5,
4.将元素*2
print([i*2 for i in range(1,11)])
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
5.键盘输入5个数判断是否是回文
num = list(input("请输入数"))
nums = list(reversed(num))
print(nums)
print(num)
for i in num:
for j in nums:
if i==j:
tag = 0
else:
tag =1
if tag:
print("不是回文")
else:
print("是回文")
请输入数12345
[‘5’, ‘4’, ‘3’, ‘2’, ‘1’]
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
不是回文
[‘1’, ‘2’, ‘3’, ‘2’, ‘1’]
[‘1’, ‘2’, ‘3’, ‘2’, ‘1’]
是回文
6、生成一个包含个整数的随机列表,对偶数索引进行降序排列,奇数索引的元素不变
lst=random.choices(range(1,100),k=20)
print("随机生成20个1~100的数字:\n",lst)
list_one=lst[: : 2]
list_tow=sorted(list_one,reverse=True)
print(f"列表中偶数索引元素为{list_one}偶数降序排列为{list_tow}")
随机生成20个1~100的数字:
[34, 12, 64, 72, 51, 23, 43, 88, 71, 81, 38, 34, 70, 97, 47, 77, 93, 15, 95, 6]
列表中偶数索引元素为[34, 64, 51, 43, 71, 38, 70, 47, 93, 95]偶数降序排列为[95, 93, 71, 70, 64, 51, 47, 43, 38, 34]
7、nums=[2,7,11,15,1,8],找到列表中任意相加等于9的元素集合如[(0,9),(4,5)]
nums=[2,7,11,15,1,8]
lst=[(i,j)for i in nums for j in nums if i+j==9]
print("找到的组合为",lst)
找到的组合为 [(2, 7), (7, 2), (1, 8), (8, 1)]
序列编程题
1、编写程序,将用户输入的数字转换成相应的中文大写数字。例如,1.23转换为壹点贰叁。
def f(num):
chinese = {0: '零',1: '壹',2: '贰',3: '叁',4: '肆',5: '伍',6: '陆',7: '柒',8: '捌',9: '玖' }
num_str = str(num)
int_chinese = ''
for i in num_str if '.' not in num_str else num_str.split('.')[0]:
int_chinese += chinese[int(i)]
decimal_chinese = ''
if '.' in num_str:
for i in num_str.split('.')[1]:
decimal_chinese += chinese[int(i)]
return '{}点{}'.format(int_chinese, decimal_chinese) if decimal_chinese else int_chinese
input_num = float(input("请输入一个数字:"))
print(f(input_num))
请输入一个数字:100.918
壹零零点玖壹捌
2、编写程序,随机生成5个0~10之间不相等的数。
num_list = []
num = random.randint(0, 10)
num_list.append(num)
while len(num_list) < 5:
num = random.randint(0, 10)
for i in num_list:
if i == num:
tag = 1
else:
tag = 0
if tag == 0:
num_list.append(num)
print(num_list)
[10, 6, 2, 9, 1]
3、随机生成6位的验证码,验证码是小写字母、大写字母、数字三种类型中的一种。【数字09;小写字母az的ASCII是9797+25;大写字母AZ的ASCII是65~65+25】
num = [i for i in range(48,58)]
s_str = [i for i in range(97, 97 + 26)]
m_str = [i for i in range(65, 65 + 26)]
list = []
list.extend(num)
list.extend(s_str)
list.extend(m_str)
for i in range(0, 6):
check = random.choices(list)
print(check,end='')
print(chr(check[0]),end='')
b1AQtc
4、创建一个20以内奇数列表,计算列表中所有数的和。Sum(Range(1,20,2))
sum = sum(range(1,20,2))
print(sum)
100
5、输入一个字符串和一个字符,计算字符在字符串的出现的次数。 Count()
str = input("请输入一字符串:")
for i in str:
print(i, ':', str.count(i))
请输入一字符串:sdxsaxs
s : 3
d : 1
x : 2
s : 3
a : 1
x : 2
s : 3
6、将下面表格中的数据按成绩从高到低进行排序,输出排序结果。输出结果如下图所示。
姓名 成绩
吴忱 76
杨九莲 99
安芸芸 84
刘洋 70
兰成 89
data = [
{"姓名": "吴忱", "成绩": 76},
{"姓名": "杨九莲", "成绩": 99},
{"姓名": "安芸芸", "成绩": 84},
{"姓名": "刘洋", "成绩": 70},
{"姓名": "兰成", "成绩": 89}
]
sorted_data = sorted(data, key=lambda item: item['成绩'], reverse=True)
print("排名\t姓名\t成绩")
for index, item in enumerate(sorted_data, start=1):
print(f"{index}\t{item['姓名']}\t{item['成绩']}")
排名 姓名 成绩
1 杨九莲 99
2 兰成 89
3 安芸芸 84
4 吴忱 76
7、随机生成1000个由0、1组成的字符串,统计0、1的个数。
nums=random.choices(range(2),k=1000)
for i in nums:
if i==0:
lst1=nums.count(i)
for j in nums:
if j==1:
lst2=nums.count(j)
print(f"0字符在字符串中一共出现了{lst1}次")
print(f"1字符在字符串中一共出现了{lst2}次")
0字符在字符串中一共出现了479次
1字符在字符串中一共出现了521次
8、输入5个数,将其分别按从小到大,从大到小的顺序输出。
接收用户输入的5个数
numbers = []
for i in range(5):
num = float(input(f"请输入第{i + 1}个数: "))
numbers.append(num)
# 按从小到大排序
sorted_asc = sorted(numbers)
print("从小到大排序:", sorted_asc)
# 按从大到小排序
sorted_desc = sorted(numbers, reverse=True)
print("从大到小排序:", sorted_desc)
请输入第1个数: 110.23
请输入第2个数: 23.89
请输入第3个数: 349.678
请输入第4个数: 23.101
请输入第5个数: 1999.99
从小到大排序: [23.101, 23.89, 110.23, 349.678, 1999.99]
从大到小排序: [1999.99, 349.678, 110.23, 23.89, 23.101]
9、有两个集合,集合A为{1,2,3,4,5},集合B为{4,5,6,7,8},计算这两个集合的并集|、交集&、差集-和对称差集^。从键盘输入一个数据,判断其是否在集合A或集合B中。
A={1,2,3,4,5}
B={4,5,6,7,8}
print("集合A:{1,2,3,4,5}\n集合B:{4,5,6,7,8}")
lst1=A|B
lst2=A&B
lst3=A-B
lst4=A^B
print("这两个集合的并集为:",lst1)
print("这两个集合的交集为:",lst2)
print("这两个集合的差集为:",lst3)
print("这两个集合的对称差集为:",lst4)
n=int(input("请输入一个数:"))
if n in A and n in B:
print(f"输入的数{n}即在集合A也在集合B中")
elif n in A or n in B:
print(f"输入的{n}数在集合A或集合B中")
else:
print(f"输入的数{n}不在集合A和集合B中")
集合A:{1, 2, 3, 4, 5}
集合B:{4, 5, 6, 7, 8}
这两个集合的并集为: {1, 2, 3, 4, 5, 6, 7, 8}
这两个集合的交集为: {4, 5}
这两个集合的差集为: {1, 2, 3}
这两个集合的对称差集为: {1, 2, 3, 6, 7, 8}
请输入一个数:0
输入的数0不在集合A和集合B中
10、输入一个字符串和一个字符,计算字符在字符串中出现的次数。
str = input('输入字符串:')
i= input('输入统计的字符')
print(i,'在',str,'中出现:',str.count(i),'次。')
输入字符串:hello world
输入统计的字符l
l 在 hello world 中出现: 3 次。
11、对zip对象结果进行序列解包,并循环遍历;对enumerate对象结果进行序列解包,并循环遍历。
lst1=random.choices(range(101),k=10)
lst2=random.choices(range(50,101),k=10)
print(f"随机生成10个0~100的列表{lst1}\n随机生成10个50~100的列表{lst2}")
lst=zip(lst1,lst2)
for i,j in lst:
print("循环遍历:",i,j)
lst3=random.choices(range(100,1001),k=10)
print("随机生成10个100~1000的列表为:\n",lst3)
lst4=enumerate(lst3)
for x,y in lst4:
print("解包并循环遍历",x,y)
随机生成10个0~100的列表[75, 70, 4, 67, 16, 51, 62, 28, 90, 2]
随机生成10个50~100的列表[71, 70, 89, 80, 72, 84, 51, 68, 52, 90]
循环遍历: 75 71
循环遍历: 70 70
循环遍历: 4 89
循环遍历: 67 80
循环遍历: 16 72
循环遍历: 51 84
循环遍历: 62 51
循环遍历: 28 68
循环遍历: 90 52
循环遍历: 2 90
随机生成10个100~1000的列表为:
[110, 573, 285, 513, 270, 798, 748, 901, 312, 895]
解包并循环遍历 0 110
解包并循环遍历 1 573
解包并循环遍历 2 285
解包并循环遍历 3 513
解包并循环遍历 4 270
解包并循环遍历 5 798
解包并循环遍历 6 748
解包并循环遍历 7 901
解包并循环遍历 8 312
解包并循环遍历 9 895
12、随机生成20个数字的列表,保留奇数列表。filter
lst=random.choices(range(101),k=20)
print("随机生成20个数字的列表为:\n",lst)
def f(n):
return n%2==1
lst1=filter(f,lst)
print("其中的奇数列表为:",list(lst1))
随机生成20个数字的列表为:
[86, 31, 46, 43, 41, 64, 96, 61, 62, 28, 53, 32, 89, 97, 82, 77, 75, 20, 54, 29]
其中的奇数列表为: [31, 43, 41, 61, 53, 89, 97, 77, 75, 29]
13、输入一些数字,作为元组的元素,查找最后一个数字在元组中出现多少次?
tup = input("请输入一些数字:")
print(f"最后一个元素{tup[-1]}出现次数是{tup.count(tup[-1])}")
请输入一些数字:867843697234857435098707887
最后一个元素7出现次数是6
14、输入一些数字,作为元组的元素,在元组中随机确定一个数字,查找这个数字首次出现的位置。
tup = input("请输入一些数字:")
n = input("请输入一个数字:")
print(f"你输入的这个数字{n}在这些数字中首次出现的位置是第{tup.index(n)}个位置")
请输入一些数字:5376560874643
请输入一个数字:7
你输入的这个数字7在这些数字中首次出现的位置是第2个位置
15、随机生成10个小写字母,随机生成10个大写字母。
lst = random.sample(string.ascii_lowercase, 10)
print("随机生成的小写字母:", lst)
LST= random.sample(string.ascii_uppercase, 10)
print("随机生成的大写字母:", LST)
随机生成的小写字母: [‘z’, ‘v’, ‘x’, ‘u’, ‘e’, ‘r’, ‘n’, ‘a’, ‘m’, ‘t’]
随机生成的大写字母: [‘J’, ‘T’, ‘K’, ‘N’, ‘W’, ‘G’, ‘M’, ‘Y’, ‘O’, ‘U’]
16、创建一个20以内奇数列表,计算列表中所有数的和。
lst=random.choices(range(21),k=30)
print("随机生成30个20以内的数字列表为:",lst)
lst1=[]
for i in lst:
if i%2==1:
lst1.append(i)
print("所有数的和为:",sum(lst1))
随机生成30个20以内的数字列表为: [12, 9, 1, 16, 2, 20, 9, 3, 16, 5, 15, 1, 14, 4, 13, 6, 9, 2, 19, 8, 9, 1, 0, 15, 0, 7, 4, 5, 14, 13]
所有数的和为: 134
17、设计一个函数,接受一组数据,分别计算最大值和最小值。
n=input("请输入一些数:")
print("这些数中最大的为:",max(n))
print("这些数中最小的为:",min(n))
请输入一些数:80875098314875
这些数中最大的为: 9
这些数中最小的为: 0
18、统计一篇英文文章的词频。
import requests
from collections import Counter
import re
url = 'http://en.people.cn/'
response = requests.get(url)
text = response.text
text = text.lower()
text = re.sub(r'[^\w\s]', '', text)
words = text.split()
stopwords = set(['the', 'and', 'a', 'an', 'in', 'on', 'is', 'are', 'was', 'were', 'am', 'i', 'you', 'he', 'she', 'it', 'we', 'they', 'me', 'him', 'her', 'us', 'them', 'my', 'your', 'his', 'her', 'its', 'our', 'their', 'mine', 'yours', 'his', 'hers', 'ours', 'theirs'])
words = [word for word in words if word not in stopwords]
word_counts = Counter(words)
for word, count in word_counts.most_common():
print(f"{word}: {count}")
21、随机生成1000个由大小写英文字母构成的字符串,分别统计每个字符的个数。
import random
from collections import Counter
strings = [''.join(random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', k=10)) for _ in range(1000)]
char_counts = Counter(''.join(strings))
for char, count in char_counts.items():
print(f"{char}: {count}")
L: 186,n: 191,z: 202,O: 167,u: 183,h: 192,N: 165,J: 175,p: 229,r: 190,k: 180,M: 191,g: 204,o: 192,Z: 190,c: 202,A: 172,V: 180,y: 207,X: 217,l: 197,G: 205,H: 183,Y: 207,s: 203,x: 195,a: 161,K: 184,C: 172,D: 202,U: 184,w: 178,E: 182,P: 184,m: 190,B: 189,d: 184,v: 171,i: 208,f: 197,S: 212,t: 177,e: 193,I: 206,Q: 214,R: 223,W: 192,j: 194,T: 204,q: 202,b: 200,F: 192,
22、已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串。
from collections import Counter
data = ['hello', 'world', 'python', 'programming', 'code', 'example', 'test', 'hello world']
def f(data):
lst= []
for i in data:
char_counts = Counter(i)
half_length = len(i) // 2
excess_chars = sum(1 for count in char_counts.values() if count > half_length)
if excess_chars <= half_length:
lst.append(i)
return lst
lst_data = f(data)
for s in lst_data:
print(s)
24、编写程序,生成包含1000个[0,100]的随机整数,并统计每个元素的出现次数。
nums=random.choices(range(101),k=1000)
print("生成1000个[0,100]的随机整数:",nums)
dct={i:0 for i in range(101)}
for i in nums:
dct[i]+=1
for num,count in dct.items():
print(f"数字{num}: 出现 {count}次")
数字0: 出现 11次
数字1: 出现 18次
数字2: 出现 6次
数字3: 出现 9次
数字4: 出现 13次
…
25、编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标闭区间之间的元素组成的子列表。例如用户输入[1,2,3,4,5,6]和2,5,程序输出[3,4,5,6]。
lst= eval(input("请输入一个列表:"))
start_index = int(input("请输入起始下标:"))
end_index = int(input("请输入结束下标:"))
if start_index < 0 or end_index < 0 or start_index >= len(lst) or end_index >= len(lst) or start_index > end_index:
print("无效的下标!")
else:
print("介于两个下标之间的子列表为:",lst[start_index:end_index+1])
请输入一个列表:1212,21,2,12,12,2,2,12,12,1,2,33
请输入起始下标:2
请输入结束下标:7
介于两个下标之间的子列表为: (2, 12, 12, 2, 2, 12)
26、设计一个字典,并编写程序,用户输入内容作为“键”,然后输出字典对应的“值”,如果用户输入的“键”不存在,则输出“您输入的键不存在!”
dct = { "苹果": "apple", "香蕉": "banana","橙子": "orange","葡萄": "grape","西瓜": "watermelon"}
name= input("请输入一个水果名称:")
if name in dct:
print(dct[name])
else:
print("您输入的键不存在!")
请输入一个水果名称:苹果
apple
27、编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
nums=random.choices(range(101),k=20)
print("生成20个随机整数:",nums)
lst1=nums[0:10]
lst2=nums[10:21]
print(f"将前10个元素升序排列{sorted(lst1)}\n将后10个元素降序排列{sorted(lst2,reverse=True)}")
生成20个随机整数: [22, 48, 60, 74, 2, 49, 15, 67, 10, 97, 19, 66, 37, 75, 25, 8, 22, 32, 16, 50]
将前10个元素升序排列[2, 10, 15, 22, 48, 49, 60, 67, 74, 97]
将后10个元素降序排列[75, 66, 50, 37, 32, 25, 22, 19, 16, 8]
28、编写程序,输入一个字符串,输出其中出现次数最多的字符及其出现次数。
lst_str = input("请输入一串字符串:")
dct = {}
for char in lst_str:
if char in dct:
dct[char] += 1
else:
dct[char] = 1
max_char = max(dct, key=dct.get)
max_count = dct[max_char]
print(f"出现次数最多的字符是{max_char} 出现{max_count}次")
请输入一串字符串:rtewrtry
出现次数最多的字符是r 出现3次
29、使用字典推导式生成字典,字典的键是所有的英文字母,值是对应的ASCII码。
d1={}
for i in range(26):
d1[chr(i+65)]=i+65
for i in range(26):
d1[chr(i+97)]=i+97
print(d1)
{‘A’: 65, ‘B’: 66, ‘C’: 67, ‘D’: 68, ‘E’: 69, ‘F’: 70, ‘G’: 71, ‘H’: 72, ‘I’: 73, ‘J’: 74, ‘K’: 75, ‘L’: 76, ‘M’: 77, ‘N’: 78, ‘O’: 79, ‘P’: 80, ‘Q’: 81, ‘R’: 82, ‘S’: 83, ‘T’: 84, ‘U’: 85, ‘V’: 86, ‘W’: 87, ‘X’: 88, ‘Y’: 89, ‘Z’: 90, ‘a’: 97, ‘b’: 98, ‘c’: 99, ‘d’: 100, ‘e’: 101, ‘f’: 102, ‘g’: 103, ‘h’: 104, ‘i’: 105, ‘j’: 106, ‘k’: 107, ‘l’: 108, ‘m’: 109, ‘n’: 110, ‘o’: 111, ‘p’: 112, ‘q’: 113, ‘r’: 114, ‘s’: 115, ‘t’: 116, ‘u’: 117, ‘v’: 118, ‘w’: 119, ‘x’: 120, ‘y’: 121, ‘z’: 122}
30、生成从某个字母开始的n个元素构成的字典。如l开始的5个。
star = input("请输入开始的字母:")
n = int(input("几个元素"))
star_ascll = ord(star)
d1={}
print(star_ascll)
for i in range(n):
d1[chr(star_ascll)]=0
star_ascll+=1
print(d1)
请输入开始的字母:t
几个元素7
116
{‘t’: 0, ‘u’: 0, ‘v’: 0, ‘w’: 0, ‘x’: 0, ‘y’: 0, ‘z’: 0}