17:Python数据类型练习题

# 1获取c1,c2相同的元素列表
c1 = [11, 22, 33]
c2 = [22, 33, 44]
for i in c1:
if i in c2:
print(i)

# 2获取c1中有,c2没有的元素列表
for i in c1:
if i not in c2:
print(i)

# 3获取c2中有,c1没有的元素列表
for i in c2:
if i not in c1:
print(i)

# 4获取c1和c2中内容不同的元素
for i in c2:
if i not in c1:
print(i)
for i in c1:
if i not in c2:
print(i)


# li1 = [1, 2, 3, 4, 5, 6, 7, 8]
# li2 = [1, 2, 3, 4, 5, 6, 7, 8]
# for i in li1:
# print(li1)
# for i2 in li2:
# print(li2)

# 由1、2、3、4、5、6、7、8、8个数,能组成多少个互不相同其无重复数字的两位数?
count=0
for i in range(1,9):
for v in range(1,9):
if i!=v:
count+=1
print(count)

# 由1、2、3、4、5、6、7、8、8个数,把组成所有不重复的两位数打印出来?
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
for first_digit in numbers:
for second_digit in numbers:
if first_digit != 0 and first_digit != second_digit:
print(f"{first_digit}{second_digit}", end=' ')
for first_digit in numbers:
for second_digit in numbers[numbers.index(first_digit) + 1:]:
print(f"{first_digit}{second_digit}", end=' ')

#99乘法表

for i in range(1,10):
string = ""
for j in range(1,i+1):
string +=str(j)+"*"+str(i)+"="+str(i*j)+"\t"
print(string)


for i in range(1, 10): # 乘法表的第一个数(乘数),从1到9
for j in range(1, i+1): # 乘法表的第二个数(被乘数),从1到当前的i(因为乘法表是上三角的)
# 打印乘法表的一项,end参数用于在同一行打印多个项,不换行
# 使用格式化字符串来对齐输出,确保乘法表的整洁
print(f"{j}x{i}={i*j}\t", end='')
# 当一行打印完毕后,输出换行符以开始新的一行
print()

for i in range (1,10):
for j in range(1,i+1):
print(str(j)+"*"+str(i)+"="+str(i*j)+"\t",end="")
print("\n",end="")

print("dfkw",'wfdfds',580,sep='@') #sep分割默认是空格, end的默认值是\n换行

# 这里面的数字两个组合,多少种不同样的,数字不重复的
li = [1, 2, 3, 4]
c = len(li)
for i in range(0, c-1):
for v in range(i + 1, c):
print(li[i], li[v])

# 用Python 开发程序自动计算方案:
# 公鸡5文钱一只,母鸡3文钱一只,小鸡3只1文钱,用100文钱买100只鸡,
# 其中公鸡,母鸡,小鸡都必须要有,文公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
for g in range(1, 100 // 5):
for m in range(1, 100 // 3):
for x in range(1, 100):
if g + m + x==100 and g * 5+m * 3+x / 3==100:
print(g, m, x)

for x in range(1, 20): # 公鸡最多买19只(因为还要买母鸡和小鸡)
# 遍历所有可能的母鸡数量
for y in range(1, 34): # 母鸡最多买33只(因为公鸡至少1只,小鸡至少1只*3=3只)
# 根据公鸡和母鸡的数量,计算小鸡的数量
z = 100 - x - y # 总共要买100只鸡
# 检查小鸡的数量是否为3的倍数且大于等于3
if z % 3 == 0 and z >= 3:
# 计算总花费
total_cost = 5 * x + 3 * y + z // 3
# 检查总花费和总数量是否满足条件
if total_cost == 100:
print(f"公鸡:{x}只, 母鸡:{y}只, 小鸡:{z}只")

# 用代码实现:利用下划线将每列的每个元素拼接成字符串,li=['woshi','zhongguo','ren']
li=['woshi','zhongguo','ren']
v='_'.join(li)
print(v)

li=['woshi','zhongguo',123]
li[2]='123'
v='_'.join(li)
print(v)

li=['woshi','zhongguo',123]
li[2]=str(li[2])
v='_'.join(li)
print(v)

li = ['woshi', 'zhongguo', 123]
# 使用列表推导式将每个元素转换为字符串(尽管在这个特定例子中可能是多余的)
v= [str(item) for item in li]
m='_'.join(v)
print(m)

#写代码,有如下元组,按照要求实现每一个功能
# tu=('wo','shi','chengxuyuan','xuexi','zhe')
# a.计算元组长度并输出
# b.获取元组的第2个元素,并输出
# c.获取元组的1~3个元素,并输出
# d.请使用for输出元组的元素
# e.请使用for,len,range,输出元组的索引
# f.请使用enumerate输出元组的元素和符号(序号从10开始)

tu=('wo','shi','chengxuyuan','xuexi','zhe')
print(len(tu))
print(tu[1])
print(tu[1:4])
for i in tu:
print(i)
for m in range(len(tu)):
print(m)

for x, y in enumerate(tu,10):
print(x,y)

#给kk3对应的值加上44
tu = ('woshi', '2k', 'k3',[11, 22, 33], {'kk1': 'vv1', 'kk2:': 'vv2', 'kk3': (11, 22)})
# tu[4][2]['kk3'].append('')
# print(tu)
# 原始元组
tu = ('woshi', '2k', 'k3', [11, 22, 33], {'kk1': 'vv1', 'kk2:': 'vv2', 'kk3': (11, 22)})
# 访问字典中的'kk3'键,并获取其值(元组)
kk3_value = tu[4]['kk3']
# 将元组转换为列表,添加44
kk3_value_list = list(kk3_value)
kk3_value_list.append(44)
# 将列表转换回元组
kk3_value_tuple = tuple(kk3_value_list)
# 更新字典中的'kk3'键的值
tu = list(tu) # 因为元组不可变,我们需要先将其转换为列表
tu[4]['kk3'] = kk3_value_tuple
tu = tuple(tu) # 转换回元组
# 打印修改后的元组
print(tu)

# 有以下列表,nums=[2,7,4,11,5,1,8,7],请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0,1),(4,5)]
nums=[2,7,4,11,5,1,8,7]
a=[]
for i in nums:
for j in nums:
if i+j==9:
a.append([i,j])
print(a)

for i in range(len(nums)):
for j in range(len(nums)):
if nums[i]+nums[j]==9:
a.append((i,j))
print(a)

# 列表属性的回顾
li=['abcde','fghij','klmno']
print(len(li))
li.append('pqrst')
print(li)
li.insert(0,'woshi')
print(li)
li.remove('abcde')
print(li)
li.pop(2)
print(li)
li.reverse()
print(li)
for i in range(len(li)):
print(i)
for i,q in enumerate(li,100):
print(i,q)

# a.通过for循环创建500条数据,数据类型不限,如:
# abc1 abc1@qq.com pwd1
# abc2 abc2@qq.com pwd3
# abc3 abc3@qq.com pwd3
# b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据
# 注意:每页显示10条数据
# 用户输入页码是非十进制数字,则提示输入内容格式错误
# user_list =[]
# for i in range(1,501):
# temp={'name':'abc'+str(i),'email':'abc@qq.com'+str(i),'pwd':'pwd'+str(i)}

# 初始化一个空列表用于存储用户信息
user_list = []
# 使用循环创建500个用户
for i in range(1, 501):
temp = {'name': 'abc' + str(i), 'email': 'abc@qq.com' + str(i), 'pwd': 'pwd' + str(i)}
# 将temp字典添加到user_list列表中
user_list.append(temp)
# 打印整个user_list列表
print(user_list)
while True:
s=input('请输入1,2,3-51页码:')
s= int(s)
start=(s-1)*10
end=s*10
result= user_list[start:end]
for item in result:
print(item,type(item))

# 导入必要的库
import random

# 生成500条数据的函数
def generate_data(count):
data = []
for i in range(1, count + 1):
username = f"abc{i}"
email = f"{username}@qq.com"
password = random.choice(["pwd1", "pwd2", "pwd3"]) # 随机选择密码
data.append(f"{username} {email} {password}\n")
return data

# 处理页码输入的函数
def display_page(data, page):
if not isinstance(page, int) or page < 1 or page > len(data) // 10:
return "输入内容格式错误,请输入有效的页码。"
start = (page - 1) * 10
end = start + 10
return ''.join(data[start:end])

# 检查页码输入是否为十进制数字的函数
def check_page_input(input_str):
try:
page = int(input_str)
return page
except ValueError:
return None

# 主程序
if __name__ == "__main__":
# 生成500条数据
data = generate_data(500)

# 提示用户输入页码
while True:
page_input = input("请输入要查看的页码(每页显示10条数据):")
page = check_page_input(page_input)
if page is None:
print("输入内容格式错误,请输入十进制数字。")
else:
page_content = display_page(data, page)
if page_content.startswith("输入内容格式错误"):
print(page_content)
else:
print(f"第{page}页内容:\n{page_content}")
posted @ 2024-08-06 23:03  柳志军  阅读(2)  评论(0编辑  收藏  举报