天天看點

python基礎|資料類型練習題

'''
1,請用代碼實作:利用下劃線将清單中的每一個元素拼接成字元串,|l = ['alex', 'eric', 'rain']
'''
# l = ['alex', 'eric', 'rain']
# s ='_'.join(l)    # join疊代送入
# print(s)

'''
2,查找下清單中的元素,移除每個元素的空格,并查找以A或a開頭且以c結尾的所有元素
li = ['alex', ' aric', 'Alex', 'Tony', 'rain']
li = ['alex', ' aric', 'Alex', 'Tony', 'rain']
dic = {'K1':alex','K2':' aric', 'K3':'Alex', 'K4':Tony'}
'''
# li = ['alex', ' aric', 'Alex', 'Tony', 'rain']
# tu = ('alex', ' aric', 'Alex', 'Tony', 'rain')
# dic = {'K1': 'alex', 'K2': ' aric', 'K3': 'Alex', 'K4': 'Tony'}
# list2 = []
# list1 = []

# for i in li:
#     a1 = i.strip()   # 移除空格
#     list2.append(a1)
#     if a1.startswith('A') or a1.startswith('a'):
#         if a1.endswith('c'):
#             list1.append(a1)
# print(list2)
# print(list1)
# list2 = []
# list1 = []
# for i in tu:
#     a1 = i.strip()   # 移除空格
#     list2.append(a1)
#     if a1.startswith('A') or a1.startswith('a'):
#         if a1.endswith('c'):
#             list1.append(a1)
# print(list2)
# print(list1)
# list2 = []
# list1 = []
# for i in dic.values():
#     a1 = i.strip()
#     list2.append(a1)
#     if a1.startswith('A') or a1.startswith('a'):
#         if a1.endswith('c'):
#             list1.append(a1)
# print(list2)
# print(list1)

'''
3,寫代碼,有如下表,按照要求實作每一個功能
li = ['alex', 'aric', 'rain']
'''
li = ['alex', 'aric', 'rain']
# 計算清單的長度
print(len(li))

# 清單中追加元素‘seven',并輸出添加後的清單
li.append('seven')
print(li)

# 請在清單第一個元素插入'Tony'
li.insert(0,'Tony')   # 根據索引插入元素
print(li)

# 請修改清單中第二個位置的元素為‘kelly',并輸出修改後的清單
li.pop(1)
li.insert(1,'kelly')
print(li)

# 請删除清單中的’eric',并輸出修改後的清單
a = li.index('aric')    # 查找‘Eric’的位置
li.pop(a)               # 按索引删除
print(li)

# 請删除清單中的第二個值,請輸出删除的值和删除後的清單
a = li.pop(1)       # 按索引删除,并用a接受删除值
print(a,li)

# 請删除清單中的第三個值,并輸出删除後的清單
li.pop(2)
del li[2]
li.remove('rain')
print(li)

# 請删除清單中的第2個到第4個元素,并輸出删除後的清單
li.extend([1, 3])
print(li)
del li[1:4:1]
print(li)

# 請将清單中的值反轉,請輸出反轉後的清單
print(li[::-1])

# 請使用for,len,range輸出清單的索引
for i in range(len(li)):
    print(i)

# 請使用enumr ate輸出清單的元素和序号
for i,j in enumerate(li):
    print(i,j)

# 請使用for循環清單中所有元素
for i in li:
    print(i)

'''
4 ,寫代碼,有如下清單,請按照功能要求實作每一個功能
li = ['hello', 'seven', ['mom', ['h','kelly'], 'all'], 123, 446]
'''
li = ['hello', 'seven', ['mom', ['h', 'kelly'], 'all'], 123, 446]
# 請根據索引輸出'kelly'
print(li[2][1][1])

# 請使用索引找到'all'元素并将其修改為'ALL’,
print(li[2][2].upper())

'''
5, 寫代碼,有如下元組,請按照功能要求實作每一個功能
tu = ('alex', 'eric', 'rain')
'''
tu = ('alex', 'eric', 'rain')
# 計算元組長度并輸出
print(len(tu))

# 擷取元組的第二個元素,并輸出
print(tu[1])

# 擷取元組第1-2個元素,并輸出
print(tu[1],tu[2])

# 請使用for循環輸出元組的元素
for i in tu:
    print(i)

# 請使用for , len, range輸出元組索引
for i in range(len(tu)):
    print(i)

# 請使用enumerate輸出元組和序号
for i,j in enumerate(tu):
    print(i,j)



'''
6 有如下變量,請按要求實作功能
tu = ('alex',[11, 22, {'k1': 'v1','k2':['age', 'name'], 'k3':(11, 22, 33)}, 44])
'''
tu = ('alex',[11, 22, {'k1': 'v1','k2':['age', 'name'], 'k3':(11, 22, 33)}, 44])
# 講述元組的特性
# 可以存多個值,不可改變

# 請問tu變量中的第一個元素“alex"是否可以被修改
# 不可以

# 請問tu變量中的k2對應的值是什麼類型?是否可以被修改?如果可,請在其中添加一個元素‘Seven'
tu[1][2]['k2'].insert(0, 'Seven')
print(tu)

# 請問tu變量中的k3對應的值是什麼類型?是否可以被修改?如果可,請在其中添加一個元素‘Seven'
#是元組,不可修改

'''
7, 字典
dic = {'k1': 'v1', 'k1': 'v2', 'k3':[11, 22, 33]}
'''
dic = {'k1': 'v1', 'k2': 'v2', 'k3':[11, 22, 33]}
# 請循環輸出所有的key
for i in dic:
    print(i)

# 請循環輸出所有value
for i in dic.values():
    print(i)

# 請循環輸出所有的key和value
for i in dic:
    print(i,dic[i])

# 請在字典添加一個鍵值對
dic['k4'] = 'v4'
print(dic)

res = dic.setdefault('k4','v4')
print(res)
print(dic)

# 請修改k1對應的值為‘alex',輸出修改後的字典
dic['k1'] = 'alex'
print(dic)

# 請在k3對應元素追加一個元素44,輸出修改後的字典
dic['k3'].append(44)
dic['k3'].insert(0,44)
dic['k3'].extend([44])
print(dic)

# 請在k3對應的值的第一個位置插入一個元素18,請輸出修改後的字典
dic['k3'].insert(0, 18)
print(dic)

'''
8 轉換
'''
s = 'alex'
# 1将字元串轉換成清單
lis = []
for i in s:
    lis.append(i)
print(lis)

# 将字元串a = 'alex'轉換成元組
lis = []
for i in s:
    lis.append(i)
print(tuple(lis))

# 将清單li = ['alex', 'seven']轉換成元組
li = ['alex', 'seven']
print(tuple(li))

# 将元組tu = ('alex', 'seven')轉換成清單
tu = ('alex', 'seven')
lis = []
for i in tu:
    lis.append(i)
print(lis)

# 将清單li = ['alex', 'seven'],轉換成字典,且字典的key以10開始往後遞增
li = ['alex', 'seven']
a = {}.fromkeys(li, 10)
print(a)

'''
9 元素分類
 有如下值集合[11, 22, 33, 44, 55, 66, 77, 88, 99, 90],将所有大于66的隻儲存在字典k1中,将小于66的值儲存至第二個k2的值中
'''
lis = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic = {'k1': [],'k2':[]}
for i in lis:
    if i > 66:
        dic['k1'].append(i)
    else:
        dic['k2'].append(i)
print(dic)

'''
10 輸出商品清單,讓使用者輸入序列号,顯示使用者選中的商品
商品 li = ['手機’, ‘電腦’, ‘滑鼠墊’, ‘遊艇’]
    1 ,允許使用者添加商品
    2 ,輸入使用者顯示内容
'''
li = ['手機', '電腦', '滑鼠墊', '遊艇']
goods = []

sigen = True
while sigen:
    print('0:手機', '1:電腦', '2:滑鼠墊', '3:遊艇')
    goods_num = int(input("請輸入商品序列号:").strip())
    goods.append(li[goods_num])
    print(goods)
    com = input('是否繼續購物(Y/N):').strip()
    if com == 'N':
        sigen = False
        print('購物結束!歡迎再來')

'''
11, 使用者互動顯示類似省市N級關聯的選擇
    1, 允許使用者增加内容
    2, 允許使用者檢視某一級别内容
'''
dic = {'河南省':{'鄭州市':['金水區'],}, '上海市':{'上海市':['徐彙區']}}
sheng  = input('請輸入所在省份名:').strip()
if sheng in dic:
    shi = input('請輸入所在市級名:').strip()
    if shi in dic[sheng]:
        qu = input('請輸入所在區:').strip()
        if qu in dic[sheng][shi]:
            print('省/直轄市/自治區:{},  市:{},  縣/區;{}'.format(sheng, shi, qu))
        else:
            dic[sheng][shi].append(qu)
            print('省/直轄市/自治區:{},  市:{},  縣/區;{}'.format(sheng, shi, qu))
    else:
        dic[sheng][shi] =[]
        qu = input('請輸入所在區:').strip()
        # print(dic[sheng][shi])
        dic[sheng][shi].append(qu)
        print('省/直轄市/自治區:{},  市:{},  縣/區;{}'.format(sheng, shi, qu))
else:
    dic[sheng] = {}
    shi = input('請輸入所在市級名:').strip()
    dic[sheng][shi] = []
    qu = input('請輸入所在區:').strip()
    dic[sheng][shi].append(qu)
    print('省/直轄市/自治區:{},  市:{},  縣/區;{}'.format(sheng, shi, qu))

'''
12列舉布爾值是False的所有值
'''
# 0 ,'',[],(),{},None

'''
13 有兩個清單
l1 = [11, 22, 33]
l2 = [22, 33, 44]
'''
l1 = [11, 22, 33]
l2 = [22, 33, 44]
s1 = set(l1)
s2 = set(l2)

# # 擷取l1中有,l2中沒有的值
# for i in l1:
#     if i not in l2:
#         print(i)
# print(s1 - s2)

# 擷取l1和l2中内容都沒有的元素
print(s1 ^ s2)

'''
14,利用for循環和range輸出
'''
for循環從大到小輸出1-100
for i in range(1, 101):
    print(i,end=', ')

for循環從大到小輸出100-1\
lis = [i for i in range(1, 101)]
# lis.reverse()
# for j in lis:
#     print(j, end=', ')

# while循環從大到小輸出1-100
i = 1
while i <= 100:
    print(i)
    i += 1

# while循環從大到小輸出100-1
i = 100
while i > 0:
    print(i)
    i -= 1

'''
15,利用for循環和range輸出9*9乘法表
'''
for i in range(1,10):
    for j in range(1,i+1):
        print('{}*{}={}\t'.format(j, i, i*j), end ='')
    print()

'''
16, 求100以内的素數
'''
# 素數大于等于2的數,且除了自身和1,不能被其他數整除
a = 0
for i in range(2,101):          # 從2開始到100内的數周遊
    for j in range(2, i):       # 周遊這個數2到i-1的數。
        if i % j == 0:          # 判斷這個數能被區間(2 i-1)的數整除不?
            break               # 可以被整除,跳出本層for循環
    else:
        print(i,end=', ')

'''
17 用冒泡法将[1, 3, 2, 7, 6, 13, 41, 24, 33, 85, 56]從大到小排列
'''
l1 = [1, 3, 2, 7, 6, 13, 41, 24, 33, 85, 56]
for i in range(len(l1)):
    for j in range(i, len(l1)):
        if l1[i] < l1[j]:
            l1[i], l1[j] = l1[j], l1[i]
            print(l1)      

轉載于:https://www.cnblogs.com/huaiXin/p/11173918.html