1
# 1、编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)
import random
l1 = [random.randint(1,100) for i in range(20)]
l1[::2] = sorted(l1[::2], reverse=True)
print(l1)
2
# 2、有三个集合,pythonSet = {'王雪','李明','唐德','罗明'}、cSet = {'朱佳','李明','唐德','杨鹏'}、javaSet = {'李思','李明','郑君','罗明'}
# 分别表示会Python、C、Java语言的人名,请输出只会Python不会C的人、三种语言都会的人、会任意两种语言的人。
pythonSet = {'王雪','李明','唐德','罗明'}
cSet = {'朱佳','李明','唐德','杨鹏'}
javaSet = {'李思','李明','郑君','罗明'}
total = pythonSet.union(cSet, javaSet)
print("只会Python不会C:", end="")
for i in pythonSet:
if i not in cSet and i not in javaSet:
print(i, end=" ")
print()
print("三种语言都会:", end="")
for i in total:
if i in cSet and i in javaSet and i in pythonSet:
print(i, end=" ")
print()
print("会任意两种:", end="")
for i in total:
if i in pythonSet and i in javaSet or i in pythonSet and i in cSet or i in javaSet and i in cSet:
print(i, end=" ")
print()
3
# 3、生成8位无重复的密码(可以包含数字、大小写字母)。
import random
import string
totalChar = string.digits + string.ascii_letters
ans = ''
for i in range(8):
ch = random.choice(totalChar)
ans = ans + ch
# 移除已添加字符
totalChar = "".join(totalChar.split(ch))
print(ans)
4
# 4、首先生成包含1000个随机字符的字符串,然后统计每个字符的出现次数。(使用字典)
import random
import string
all_characters = list(string.ascii_letters + string.digits + string.punctuation)
rand_string = "".join(random.choice(all_characters) for i in range(1000))
char_counts = {}
for ch in rand_string:
if ch not in char_counts:
char_counts[ch] = rand_string.count(ch)
for key, value in char_counts.items():
print(f"{key}出现了{value}次")
5
# 5、阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒米,
# 第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米呢?
total = 0
for i in range(64):
total += 2**i
print(total)
6
# 6、编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标之间的元素组成的子列表。例如用户输入[1,2,3,4,5,6]和2,5,程序输出[3,4,5]。
num_list = list(map(int, input().strip("[]").split(",")))
a,b = map(int, input().split(","))
print(num_list[a:b])
7
# 7、现有一个存放用户登录信息的字典,请对用户字典进行管理(更新删除和插入操作),操作时要求输出删除的用户名,每个操作后显示最新的字典。
import os
import time
userDict = {'admin': '123456', 'administrator': '12345678', 'root': 'password'}
while True:
print("=================")
print("1. 删除用户")
print("2. 插入用户")
print("3. 更新用户")
print("0. 退出")
print("=================")
choice = input("请输入选项:")
if choice == '1':
print("当前用户信息如下:")
for key, value in userDict.items():
print(f"用户名:{key},密码:{value}")
while True:
toDel = input("请输入要删除的用户名")
if toDel not in userDict.keys():
print("未找到用户,请重新输入!")
continue
break
print(f"已删除:{toDel},{userDict[toDel]}")
del userDict[toDel]
print("当前用户信息如下:")
for key, value in userDict.items():
print(f"用户名:{key},密码:{value}")
elif choice == '2':
print("请输入需要添加的", end="")
addUserName = input("用户名:")
addPassword = input("密码:")
userDict[addUserName] = addPassword
print("添加完成,当前用户信息如下:")
for key, value in userDict.items():
print(f"用户名:{key},密码:{value}")
elif choice == '3':
print("当前用户信息如下:")
for key, value in userDict.items():
print(f"用户名:{key},密码:{value}")
while True:
toModify = input("请输入要更新的用户")
if toModify not in userDict.keys():
print("未找到用户,请重新输入!")
continue
break
newPassWord = input("请输入新的用户密码:")
userDict[toModify] = newPassWord
print("更新完成,当前用户信息如下:")
for key, value in userDict.items():
print(f"用户名:{key},密码:{value}")
elif choice == '0':
break
else:
print("输入有误,请重新输入!")
8
# 8、假设有三个列表:lst_who=[“小马”,“小羊”,“小鹿”],lst_where=[“草地上”,“电影院”,“家里”],lst_what=[“看电影”,“听故事”,“吃晚饭”]。
# 试编写程序,随机生成三个0-2范围内的整数,将其作为索引分别访问三个列表中的对应元素,然后进行造句。
# 例如,随机生成三个整数分别为1,0,2,则输出句子“小羊在草地上吃晚饭”。
import random
lst_who = ["小马","小羊","小鹿"]
lst_where = ["草地上","电影院","家里"]
lst_what = ["看电影","听故事","吃晚饭"]
print(f"{lst_who[random.randint(0,2)]}在{lst_where[random.randint(0,2)]}{lst_what[random.randint(0,2)]}")
9
# 9、编写程序,生成一个包含20个随机字符的列表(字母和数字),将其前10个元素升序排列,后10个元素降序排列。
import random
import string
totalChar = string.digits + string.ascii_letters
ans = []
for i in range(20):
ch = random.choice(totalChar)
ans.append(ch)
ans[0:10] = sorted(ans[0:10])
ans[10:] = sorted(ans[10:], reverse=True)
print(ans)
10
# 10、接收用户输入的字符串(你的姓名拼音),将其中的字符进行排序,并以逆序输出,例如:zhangsan - aaghnnsz--zsnnhgaa
name = input()
s1 = "".join(sorted(name))
s2 = "".join(sorted(name, reverse=True))
print(f"{name} - {s1} -- {s2}")
11
# 11、现在给出两个列表:· 列表A:(1,7,9,11,13,15,17,19)· 列表b:(2,4,6,8,10)
# 两个列表合并为列表c,按升序排列。向列表c指定位置插入一个元素(你的姓名)
A = [1, 7, 9, 11, 13, 15, 17, 19]
b = [2, 4, 6, 8, 10]
c = A+b
c.sort()
c.insert(len(c)//2, "Jerry")
print(c)
实验总结
对于我来说,使用切片对数据进行修改还是比较生疏,例如第一题和第十题,都用到了切片和排序。最初我是这样写的:print(l2[::2].sort(reverse=True))
sort()函数不会返回任何内容,所以它的打印结果是None,正因为这样,我后续把对于对象使用sort()方法改成了直接使用sorted()函数,将其返回值赋值给列表的切片,这样就修改了原列表中的对应位置的内容。
这次实验也让我加深了random包的使用,在实验中广泛用到了random.choice(),它可以在序列中随机选择一个元素并返回,日后我还需扩宽对random包的了解。
© 版权声明
文章版权归作者所有,请勿转载至任何平台。
THE END
暂无评论内容