Python列表、元組、字典相關練習題記錄——第三天

1、請用代碼實現:利用下劃線將列表的每一個元素拼接成字符串,li=[“alex”,“eric”,“rain”]

li=["alex","eric","rain"]
new_li="_".join(li)
print(new_li)

#輸出結果:
alex_eric_rain

注意:如果列表中有數字,需要轉換成字符串再連接

li=["alex","eric",123]
li[2]=str(li[2])
new_li="_".join(li)
print(new_li)

#輸出結果:
alex_eric_123

2、查找列表中元素,移除每個元素的空格,並查找以a或A開頭,並且以c結尾的所有元素。

li = ["alec", "aric", "Alex", "Tony", "rain"]
tu = ("alec", "aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': 'aric', "k3": "Alex", "k4": "Tony"}
list1 = list(tu)
list2 = list(dic.values())
newlist = li + list1 + list2
for i in newlist:
    ret = i.strip()   #i.strip():刪除字符串當前行首尾的的空格
    if (ret.startswith('a') or ret.startswith('A')) and ret.endswith('c'):
        print(ret)

#輸出結果:
alec
aric
alec
aric
aric


#注意:
列表可以直接相加,變成另一個全新的列表

3、寫代碼,有如下列表,li=[“alex”,“eric”,“rain”],按照要求實現每一個功能

a.計算列表長度並輸出

li = ["alex", "eric", "rain"]
print(len(li))
print(li)

#輸出結果:
3
['alex', 'eric', 'rain']

b.列表中追加元素"seven",並輸出添加後的列表

li = ["alex", "eric", "rain"]
li.append("seven")
print(li)

#輸出結果:
['alex', 'eric', 'rain', 'seven']

c.請在列表中的第一個位置插入元素"Tony",並輸出添加後的列表

li = ["alex", "eric", "rain"]
li.insert(0,"Tony")
print(li)

#輸出結果:
['Tony', 'alex', 'eric', 'rain']

d.請修改列表中的第2個位置的元素爲"Kelly",並輸出修改後的列表

li = ["alex", "eric", "rain"]
li[1]="Kelly"
print(li)

#輸出結果:
['alex', 'Kelly', 'rain']

e.請刪除列表中的元素"eric",並輸出刪除後的列表

li = ["alex", "eric", "rain"]
li.remove("eric")
print(li)

#輸出結果:
['alex', 'rain']

f.請刪除列表中的第2個元素,並輸出刪除的元素的值和刪除後的列表

li = ["alex", "eric", "rain"]
new_li=li.pop(1)
print(li,new_li)

#輸出結果:
['alex', 'rain'] eric

g.請刪除列表中的第3個元素,並輸出刪除後的列表

li = ["alex", "eric", "rain"]
del li[2]
print(li)

#輸出結果:
['alex', 'eric']

h.請刪除列表中的第2至4個元素,並輸出刪除元素後的列表

li = ["alex", "eric", "rain"]
del li[1:4]
print(li)

#輸出結果:['alex']

i.請將列表所有的元素反轉,並輸出反轉後的列表==

li = ["alex", "eric", "rain"]
li.reverse()
print(li)

#輸出結果:
['rain', 'eric', 'alex']

j.請使用for、len、range輸出列表的索引

li = ["alex", "eric", "rain"]
for i in range(len(li)):
    print(i)

#輸出結果:
0
1
2

k.請使用enumrate輸出列表元素和序號(序號從100開始)

li = ["alex", "eric", "rain"]
for index,value in enumerate(li, 100):
        print(index,value)

#輸出結果:
100 alex
101 eric
102 rain

l.請使用for循環輸出列表的所有元素==

li = ["alex", "eric", "rain"]
for i in li:
        print(i)

#輸出結果:
alex
eric
rain

4、寫代碼,有如下列表,li=[“hello”,“seven”,[“mon”,[“h”,“kelly”],“all”,123,446],按照要求實現每一個功能

a.請根據索引輸出"kelly"

li=["hello","seven",["mon",["h","kelly"],"all",123,446]]
print(li[2][1][1])

#輸出結果:kelly

b.請使用索引找到"all",元素並將其修改爲"ALL",如li[0][1][9]…

li=["hello","seven",["mon",["h","kelly"],"all",123,446]]
print(li[2][2].capitalize())

#輸出結果:
ALL

5、寫代碼,有如下元組,tu=(“alex”,“eric”,“rain”),按照要求實現每一個功能

a.計算元組長度並輸出==

tu=("alex","eric","rain")
print(len(tu))

#輸出結果:3

b.獲取元組的第二個元素,並輸出

tu=("alex","eric","rain")
print(tu[1])

#輸出結果:eric

c.獲取元組的1-2個元素,並輸出

tu=("alex","eric","rain")
print(tu[0:2])

#輸出結果:('alex', 'eric')

d.請使用for、len、range輸出元組的索引

tu=("alex","eric","rain")
for i in range(len(tu)):
    print(i)

#輸出結果:
0
1
2

f.請使用enumrate輸出元組元素和序號(序號從10開始)

tu=("alex","eric","rain")
for i,v in enumerate(tu,10):
    print(i,v)

#輸出結果:
10 alex
11 eric
12 rain

6、有如下變量,請實現要求的功能
tu=(“alex”,[11,22,{“k1”:‘v1’,“k2”:’[“age”,“name”]’,“k3”:(11,22,33)},44])

a.請講述元組的特性
(1)元組內可以爲任意。
(2)元組的一級元組不允許被修改。

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

c.請問tu變量中的"k2"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素"Seven"

k2對應的值是列表,可以被修改,如下:

tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
tu[1][2]["k2"].append("Seven")
print(tu)

#輸出結果:
['age', 'name', 'Seven']

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

7、字典dic={“k1”:“v1”,“k2”:“v2”,“k3”:[11,22,33]}

a.請循環輸出所有的key

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
for i in dic:
    print(i)

#輸出結果:
k1
k2
k3

b.請循環輸出所有的value

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
for i in dic.values():
    print(i)

#輸出結果:
v1
v2
[11, 22, 33]

c.請循環輸出所有的key和value

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
for i,v in dic.items():
    print(i,v)


#輸出結果:
k1 v1
k2 v2
k3 [11, 22, 33]

d.請在字典中添加一個鍵值對,“k4”:“v4”,輸出添加後的字典

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic["k4"]="v4"
print(dic)

#輸出結果:
{'k1': 'v1', 'k2': 'v2', 'k3': [11, 22, 33], 'k4': 'v4'}

e.請修改字典中"k1"的值爲"alex",輸出修改後的字典

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic["k1"]="alex"
print(dic)

#輸出結果:
{'k1': 'alex', 'k2': 'v2', 'k3': [11, 22, 33]}

f.請在k3對應的值中追加一個元素44,輸出修改後的字典

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic["k3"].append(44)
print(dic)


#輸出結果:
{'k1': 'v1', 'k2': 'v2', 'k3': [11, 22, 33, 44]}

g.請在k3對應的值的第一個位置插入元素18,輸出修改後的字典

dic={"k1":"v1","k2":"v2","k3":[11,22,33]}
dic["k3"].insert(0,18)
print(dic)

#輸出結果:
{'k1': 'v1', 'k2': 'v2', 'k3': [18, 11, 22, 33]}

8、a.將字符串 s = “alex” 轉換成列表

s = "alex"
v = list(s)
print(v)

#輸出結果:['a', 'l', 'e', 'x']

b.將列表li=[“alex”,“seven”]轉換成元組

li=["alex","seven"]
new_li=tuple(li)
print(new_li)

#輸出結果:('alex', 'seven')

c.將元組tu=(“Alex”,“seven”)轉換成列表

tu=("Alex","seven")
new_tu=list(tu)
print(new_tu)

#輸出結果:['Alex', 'seven']

d.將列表li=[“alex”,“seven”]轉換成字典且字典的key按照10開始向後遞增

li = ["alex","seven"]
n1 = {}
for k,v in enumerate(li,10):
    n1[k] = v
    print(n1)


#輸出結果:
{10: 'alex'}
{10: 'alex', 11: 'seven'}

9、元素分類:有如下集合[11,22,33,44,55,66,77,88,99,90],將所有大於66的值保留至字典的第一個key中,將小於66的值保存至第二個key值中。即:{“k1”:大於66的所有值,“k2”:小於66的所有值}

##方法一:

li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
li.sort()    #排序
z = li.index(66)
l = len(li)
dic = {"k1": li[z + 1:l], "k2": li[0:z]}
print(dic)

#輸出結果:
{'k1': [77, 88, 90, 99], 'k2': [11, 22, 33, 44, 55]}
##方法二:

li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
li.sort()
lo = []
lp = []
for i in li:
     if i < 66:
        lo.append(i)
     elif i > 66:
        lp.append(i)
dic = {"k1": lo, "k2": lp}
print(dic)

#輸出結果:
{'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 90, 99]}
##我寫的方法:

li = [11,22,33,44,55,66,77,88,99,90]
v1 = []
v2 = []
dic={
    "k1":v1,
    "k2":v2
}
for i in li:
    if i>66:
        v1.append(i)
    elif i<66:
        v2.append(i)
print(dic)


#輸出結果:
{'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 99, 90]}

10、輸出商品列表,用戶輸入序號,顯示用戶選中的商品
商品 li = [“手機”,“電腦”,“鼠標墊”,“遊艇”]
a.允許用戶添加商品
b.用戶輸入序號顯示內容

li = ["手機","電腦","鼠標墊","遊艇"]
print("當前商品列表如下:")
for i,v in enumerate(li,1):
    print(i,v)
l = input("是否要添加商品?添加商品請選擇“1”,不添加商品直接點擊“Enter”鍵即可")
if l =="1":
    a = input(">>>請輸入添加的商品:")
    li.append(a)
print(li)
p = input("是否要查看商品序號?查看請選擇“1”,不查看直接點擊“Enter”鍵即可")
if p =="1":
    b = int(input(">>>請輸入商品的序號:"))
print(li[b-1])

11、用戶交互顯示類似省縣市N級聯動的選擇
a.允許用戶增加內容
b.允許用戶選擇查看某一個級別內容

12、列舉布爾值是False的所有值

0、[]、()、{}、None、""

13、有兩個列表
l1=[11,22,33]
l2=[22,33,44]

a.獲取l1和l2中內容相同的元素列表

l1=[11,22,33]
l2=[22,33,44]
for i in l1:
    if i in l2: 
        print(i)   

#輸出結果:
22
33

b.獲取l1中有,l2中沒有的元素列表

l1=[11,22,33]
l2=[22,33,44]
for i in l1:
    if i not in l2:
        print(i)   

#輸出結果:11

c.獲取l2中有,l1中沒有的元素列表

l1=[11,22,33]
l2=[22,33,44]
for i in l2:
    if i not in l1:
        print(i)


#輸出結果:44

d.獲取l1和l2中內容不同的元素列表

l1=[11,22,33]
l2=[22,33,44]
for i in l1 :
    if i not in l2:
        print(i)
for i in l2 :
    if i not in l1:
        print(i)

#輸出結果:
11
44

14、利用for循環和range輸出

a.for循環從小到大輸出1-100

for i in range(1,101):
    print(i)

b.for循環從大到小輸出1-100

for i in range100,0,-1):
    print(i)

c.while循環從小到大輸出1-100

while True:
    a = 100
    for i in range(100):
        print(a-i)
    break

d.while循環從大到小輸出1-100

while True:
    for i in range(100):
        print(i+1)
    break

16、分頁顯示內容:
a.通過for循環創建301條數據,數據類型不限,如
alex-1 [email protected] pwd1
alex-2 [email protected] pwd2
alex-3 [email protected] pwd3

b.提示用戶,請輸入要查看的頁碼,當用戶輸入指定頁碼,則顯示指定數據
注意:
-每頁顯示10條數據
-用戶輸入頁碼是非十進制數字,則提示內容格式錯誤

for i in range(301):
   a = "alex- - %salex%[email protected] pwd%s"%(i+1,i+1,i+1)
   print(a)
```python


==**17、有 123456788個數字,能組成多少個互不相同且無重複的兩位數??**==

```python
count=0
for i in range(1,9):
    for v in range(1,9):
        if(i!=v):
            count +=1
print(count)

#輸出結果:56

18、利用for循環和range循環輸出9*9乘法表

(1)長方形

for i in range(1,10):
    for v in range(1,10):
        print("%2d*%2d=%2d"%(i,v,i*v),end="  ")
    print("")


#輸出結果:
 1* 1= 1   1* 2= 2   1* 3= 3   1* 4= 4   1* 5= 5   1* 6= 6   1* 7= 7   1* 8= 8   1* 9= 9  
 2* 1= 2   2* 2= 4   2* 3= 6   2* 4= 8   2* 5=10   2* 6=12   2* 7=14   2* 8=16   2* 9=18  
 3* 1= 3   3* 2= 6   3* 3= 9   3* 4=12   3* 5=15   3* 6=18   3* 7=21   3* 8=24   3* 9=27  
 4* 1= 4   4* 2= 8   4* 3=12   4* 4=16   4* 5=20   4* 6=24   4* 7=28   4* 8=32   4* 9=36  
 5* 1= 5   5* 2=10   5* 3=15   5* 4=20   5* 5=25   5* 6=30   5* 7=35   5* 8=40   5* 9=45  
 6* 1= 6   6* 2=12   6* 3=18   6* 4=24   6* 5=30   6* 6=36   6* 7=42   6* 8=48   6* 9=54  
 7* 1= 7   7* 2=14   7* 3=21   7* 4=28   7* 5=35   7* 6=42   7* 7=49   7* 8=56   7* 9=63  
 8* 1= 8   8* 2=16   8* 3=24   8* 4=32   8* 5=40   8* 6=48   8* 7=56   8* 8=64   8* 9=72  
 9* 1= 9   9* 2=18   9* 3=27   9* 4=36   9* 5=45   9* 6=54   9* 7=63   9* 8=72   9* 9=81 

注意:
代碼中end=“ ”表示輸出不換行,僅限python3有效
加print(" ")作用:使外循環換行

(2)左上三角形

for i in range(1,10):
    for j in range(i,10):
        print("%d*%d=%2d"%(i,j,i*j),end=" ")
    print("")

#輸出結果:
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 
2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 
6*6=36 6*7=42 6*8=48 6*9=54 
7*7=49 7*8=56 7*9=63 
8*8=64 8*9=72 
9*9=81 

(3)左下三角形

for i in range(1,10):
    for j in range(1,i+1):
        print("%d*%d=%2d"%(i,j,i*j),end=" ")
    print("")


#輸出結果:
1*1= 1 
2*1= 2 2*2= 4 
3*1= 3 3*2= 6 3*3= 9 
4*1= 4 4*2= 8 4*3=12 4*4=16 
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

(4)右上三角形

for i in range(1,10):
    for j in range(1,i):
        print(end="       ")
    for k in range(i,10):
        print("%d*%d=%2d"%(i,k,i*k),end=" ")
    print("")



#輸出結果:
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 
       2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
              3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
                     4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 
                            5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 
                                   6*6=36 6*7=42 6*8=48 6*9=54 
                                          7*7=49 7*8=56 7*9=63 
                                                 8*8=64 8*9=72 
                                                        9*9=81 

(5)右下三角形

for i in range(1,10):
    for j in range(1,10-i):
        print(end="       ")
    for k in range(1,i+1):
        print("%d*%d=%2d"%(i,k,i*k),end=" ")
    print("")



#輸出結果:

														1*1= 1 
                                                 2*1= 2 2*2= 4 
                                          3*1= 3 3*2= 6 3*3= 9 
                                   4*1= 4 4*2= 8 4*3=12 4*4=16 
                            5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 
                     6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
              7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
       8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

19、有以下列表:
nums=[2,7,11,15,1,8,7]
請找到列表中任意兩個元素相加能夠等於9的元素集合,如:[(0,1),(4,5)]

#方法一:

nums = [2, 7, 11, 15, 1, 8, 7]
li = []
n1 = []
for i in nums:
    for x in nums:
        y = i + x
        if y == 9:
            v = [i, x]
            x =(i,x)
            if v not in li:
                v.reverse()
                if v not in li:
                    n1.append(x)
                    li.append(v)
print(n1)


#輸出結果:
[(2, 7), (1, 8)]
#我寫的方法

nums=[2,7,11,15,1,8,7]
li=[]
for i in nums:
    for j in nums:
        if i + j == 9:
            x = (i,j)
            li.append(x)
li = list(set(li))       #去重操作
print(li)


#輸出結果:
[(2, 7), (1, 8), (8, 1), (7, 2)]

20、用Python開發程序自動計算方案
公雞5文錢一隻,母雞3文錢一隻,小雞3只一文錢,用100文錢買100只雞,其中公雞、母雞、小雞都必須要有
問公雞、母雞、小雞要買多少隻剛好湊足100文錢??

for x in range(1,100//5):
    for y in range(1,100//3):
        for z in range(1,100):
            if x + y + z == 100 and 5*x + 3*y + z/3 == 100:
                print(x,y,z)


#輸出結果:
4 18 78
8 11 81
12 4 84
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章