4.python(列表,元組,字典)練習題


這些題是我斷斷續續,斷了好幾天,快半個月寫的吧,,因為每天就學一個半小時Python

寫一道看一道題的答案

1.有兩個列表

      l1=[11,22,33]

      l2=[22,33,44]

      a.獲取內容相同的元素列表

       我寫的

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

 

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

        我寫的

l1 = [11, 22, 33]
l2 = [22, 33, 44]
l3 = []
for i in l1:
    if i in l2:
        pass
    else:
        l3.append(i)
print(l3)

 

 

 老師寫的

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

 

      c.獲取l1和l2中內容都不同的元素

我寫的

l1 = [11, 22, 33]
l2 = [22, 33, 44]
l3 = []
for i in l1:
    if i in l2:
        pass
    else:
        l3.append(i)
for i in l2:
    if i in l1:
        pass
    else:
        l3.append(i)
print(l3)

 

 

 

2.有1,2,3,4,5,6,7,8 八個數字,能組成多少個互不相同且無重復數字的兩位數?

我寫的

li = [1, 2, 3, 4, 5, 6, 7, 8]
v = 0
for i1 in li:
for i2 in li:
v = v+1
if i1 == i2:
v = v-1
print(v)

 

 

老師寫的 

v = 0
for i1 in range(1, 9):
    for i2 in range(1, 9):
        if i1 != i2:
          v = v+1
print(v)

 

3.輸出一份九九乘法表

我寫的

v = 0
for i1 in range(1, 10):
    for i2 in range(1, 10):
        if i1 <= i2:
           v = i1*i2
           print(str(i1)+"*"+str(i2)+"="+str(v))

不會換行

 

老師寫的

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

老師寫的第二種方法

for i1 in range(1, 10):
    for i2 in range(1, i1+1):
       print(str(i1)+"*"+str(i2)+"="+str(i1*i2)+"\t", end="")  #后面的end=""可以讓print不換行  表示可以讓輸出的末尾加的值
    print("\n",end="")

 

 

3.數列li[1,2,3,6,5],使其元素輸出組成互不相同,數字不重復的組合

我寫的

li = [1, 2, 3, 6, 5]
for i1 in li:
    for i2 in li:
        if i1 != i2:
          print(str(i1)+str(i2))

我寫的是個狗屁,沒讀懂題

 

老師寫的

li = [1, 2, 3, 6, 5]
l = len(li)
i = 0  #range()中要用到i,就要在外面定義
for i in range(0, l-i):
    for v in range(i+1, l):
          print(li[i], li[v])

 

4.

 

 我寫的

for i in range(1, 20):  
    for v in range(1, 30):
        for j in range(1, 100):
            if 5*i+3*v+1/3*j == 100:
                if i+j+v == 100:
                    text = "公雞有{a}只,母雞有{b}只,小雞有{c}只"
                    result = text.format(a=i, b=v, c=j)
                    print(result)

 

老師寫的

for i in range(1, 100//5):  # // 代表整除
    for v in range(1, 100//3):
        for j in range(1, 100):
            if 5*i+3*v+1/3*j == 100 and i + j + v == 100:
                print(i, v, j)

 

 

5.

 

 

 

a.

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

 

b.

tu = ('alex', "eric", 'rain',)
v = tu[2]
print(v)

 

c.

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

 

 d.

tu = ('alex', "eric", 'rain',)
for v in tu:
    print(v)

 

e.

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

 

f.

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

 enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。

 

 

 6.

百度了一頓

nums = [2, 7, 11, 15, 1, 8, 7]
nums1 = list(set(nums))  #去除列表中重復的元素
a = []
l = len(nums1)
i = 0
for i in range(0, l-i):
    for v in range(i+1, l):
        if nums1[i] + nums1[v] == 9:
            a.append((nums1[i],nums1[v]))
print(a)

 

 

 10.

 

 百度和看的老師的

user_list = []
for i in range(1,302):
    temp = {"name": "alex"+str(i), "email": "alex1@live.com"+str(i), "pwd": "pwd"+str(i)}
    user_list.append(temp)

while True:
    s = input('輸入頁碼:')
    if s.isdigit():
        s = int(s)
        start = (s-1)*10
        end = s*10
        result = user_list[start:end]
        for item in result:
            print(item, type(item))
    else:
        print('輸入格式錯誤')

 

11.通過數字選擇類別,輸入b返回上一級別,輸入q結束程序

dic = {
'植物':
{'草本植物':
['冬播', '春播二月蘭', '紫羅蘭', '洋蔥', '小麥'],
'木本植物':
['松', '杉', '楓楊', '樟茶', '月季', '木槿'],
'水生植物':
['泉生眼子菜', '竹葉眼子菜', '睡蓮', '萍蓬草', '荇菜', '菱角', '芡實']
},
'動物':
{'兩棲動物':
['蟾蜍', '海龜', '蠑螈', '蜥蜴', '大鯢'],
'禽類':
['雞', '鴨', '鵝火雞', '鴿', '鵪鶉'],
'哺乳類動物':
['老鼠', '豪豬', '海狸', '水豚', '獅', '豹']
}
}
go = True
while go:
##第一層
li1 = []
for i, v in enumerate(dic,1):
print(i, v)
li1.append(v)
first = input("選擇想看類別")
first = int(first)
while go:
##第二層
li2 = []
for i, v in enumerate(dic[li1[first-1]],1):
print(i, v)
li2.append(v)
second = input("選擇功能,看下一層,添加內容,返回上一層,退出程序")
if second.isdigit():
second = int(second)
while go:
##第三層
for i in dic[ li1[first-1] ] [ li2[second-1] ]:
print(i)
fourth = input("是否返回或退出")
fourth = fourth.lower()
if fourth == "b": #返回上一級
break
elif fourth == "q": #程序退出
go = False
break
elif second.isalpha():
second = second.lower()
if second == "add":
lx = input("類型:")
if dic.get(lx, 1) == 1: #要添加類型不存在時返回默認值1
dic[lx] = {}
zl = input("種類:")
if dic[lx].get(zl, 1) == 1:
dic[lx][zl] = []
while True:
mc = input("名稱:")
if mc == "q":
break
elif mc in dic[lx][zl]:
print("已將存在")
else:
dic[lx][zl].append(mc)

 

dic = {
    '植物':
        {'草本植物':
             {'冬播':{}, '春播二月蘭':{}, '紫羅蘭':{}, '洋蔥':{}, '小麥':{}},
         '木本植物':
             {'':{}, '':{}, '楓楊':{}, '樟茶':{}, '月季':{}, '木槿':{}},
         '水生植物':
             {'泉生眼子菜':{}, '竹葉眼子菜':{}, '睡蓮':{}, '萍蓬草':{}, '荇菜':{}}
        },
    '動物':
        {'兩棲動物':
             {'蟾蜍':{}, '海龜':{}, '蠑螈':{}, '蜥蜴':{}, '大鯢':{}},
         '禽類':
             {'':{}, '':{}, '鵝火雞':{}, '鴿':{}, '鵪鶉':{}},
         '哺乳類動物':
             {'老鼠':{}, '豪豬':{}, '海狸':{}, '水豚':{}, '':{}, '':{}}
        }
}
path = []
while True:
    temp = dic
    for item in path:
        temp = temp[item]
    print('當前可選的所有子節點:', list(temp.keys()))
    choice = input('1:添加節點; 2:查看節點(Q退出,B返回)')
    if choice == "1":
        name = input("請輸入要添加的節點")
        temp[name] = {}
    elif choice == "2":
        name = input('請輸入要查看的節點名稱:')
        path.append(name)
    elif choice.lower() == "b":
        if path:  #空列表是false
           path.pop()
    elif choice.lower() == "q":
        break
    else:
        print('輸入錯誤,請重新輸入!')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM