掉進懸崖的小白,開始學習列表,繼續向基礎進軍,列表操作,趣味遊戲繼續走起~

掉進懸崖的小白,開始學習列表,繼續向基礎進軍,列表操作,趣味遊戲繼續走起~

列表

列表概念及存儲方式:

1.一個可變長的存儲一系列數據的順序集合
2.列表是通過索引來訪問的
3.由連續的內存位置組成的

定義列表:

列表標識:[]
定義空列表
empty_list = []
定義同類型存儲的列表:
str_list = [“程咬金”,“亞瑟”,“曹操”]
int_list = [1,23,66,27,8]
定義混雜類型存儲的列表:
list = [“張三”,23,“男”,“13838383388”]
定義一個重複出現n次元素的列表:*
重要的事情說三遍
list = [“我要學Python!”] * 3

列表的基本操作:

nums = [1, 2, 3, 4, 5, 6, 7]
數據:1 2 3 4 5 6 7
索引:0 1 2 3 4 5 6
1.索引默認從0開始,訪問列表元素:nums[0]、nums[1]。
2.獲取列表元素數:len(nums):7
3.遍歷:
for i int range(len(nums)):
print(nums[i])

列表其他操作:
添加元素至末尾:
nums.append(8)

插入元素到指定位置,位置可以爲負:
nums.insert(1, 9)

追加列表:
nums.extend([8, 9, 10, 11])

刪除:
刪除位置上的數據:del nums[2]
刪除某個數據(只刪除找到的第一個):nums.remove(7)

修改:
nums[0] = 0

查詢:找不到會報錯
會找到第一個6的索引
index = nums.index(6)

反序
nums.reverse()
[7, 6, 5, 4, 3, 2, 1]

目前前提:列表數據是同類型的,纔可以求最大和最小
求最大:max(nums):7
求最小:min(nums):1

合併:+
nums1 = [1, 2, 3]
nums2 = [4, 5, 6]
nums3 = nums1 + nums2
[1, 2, 3, 4, 5, 6]

打亂(隨機洗牌)
random.shuffle(nums1)
將num1中的元素隨機打亂,打印出[2,1,3]

列表練習小遊戲

公交報站系統

# 2、公交報站系統,每經過一站,報出該站名稱,若乘客在該站下車,
# 在出站口提示“一共乘坐x站”。用while循環實現以上程序
#
list_stand = ["人民路","幸福路","長壽街","富民街"]
list_choose1 = []
num_stands = 0
while "y" not in list_choose1 :
    num_stands += 1
    if num_stands >=len(list_stand):
        print(f"終點站{list_stand[num_stands - 1]}到了,一共乘坐{len(list_stand) }站,請下車")
        break
    list_choose1.append(input(f"第{num_stands}站{list_stand[num_stands - 1]}到了,是否下車:"))
else:
    print(f"一共乘坐{num_stands }站")

電文譯碼(解碼)

# 3、有一電文,已按下列規律譯成譯碼:
#               A→Z  a→z
#               B→Y  b→y
#               C→X  c→x
#               …    …
# 即第一個字母變成第26個字母,第i個字母變成第(26-i+1)個字母。
# 非字母字符不變。編寫一個程序將密碼譯成原文,並輸出密碼和原文。
#
#
list_a_z = [chr(i) for i in range(97,123)]
# list_z_a = [chr(i) for i in range(122,96,-1)]
list_A_Z = [chr(i) for i in range(65,91)]
# list_Z_A = [chr(i) for i in range(90,64,-1)]

print(list_a_z)
print(list_A_Z )
# print(list_Z_A )
# print(list_z_a )
list_text = list(input("請輸入原文:"))
print(f"原文:{list_text}")
for i in range(len(list_text)):
    if list_text[i] in list_a_z :
            list_text[i] = list_a_z[25-list_a_z.index(list_text[i])]
    if list_text[i] in list_A_Z:
            list_text[i] = list_A_Z[25-list_A_Z.index(list_text[i])]

print(f"譯文:{list_text}")

模仿QQ登錄,3次有誤鎖定

# 10、登錄QQ時,QQ號和密碼必須正確並且匹配才能夠登錄成功。
# 假設最多隻允許用戶輸入三次,中間任何一次輸入正確,則給出提示:登錄成功。
# 如第一次輸入信息有誤,則給出提示:QQ號或密碼輸入有誤,請重新輸入,您還有2次機會。
# 第二次還輸入有誤,則給出:QQ號或密碼輸入有誤,請重新輸入,您還有1次機會。
# 第三次如輸入還有誤,則給出提示:您三次輸入都有誤,請與管理員聯繫。
#
def register():
    in_next = 3
    for i in range(3):
        user_name = input("請輸入用戶名:")
        user_pwd = input("請輸入密碼:")
        if user_name != "admin" or user_pwd != "88888":
            print(f"QQ號或密碼輸入有誤,請重新輸入,您還有{2 - i}次機會。") if i != 2 else print("您三次輸入都有誤,請與管理員聯繫")
        else:
            print("登錄成功")
            return


register()


兩個數的最大公約數和最小公倍數

def common_num(a,b):
    c= a if a<b else b
    for i in range(c,a*b+1):
        if i%a==0 and i%b ==0:
            # common_multiple= i
            print(f"最小公倍約數:{i}")
            break
    for j in range(c,0,-1):
        if a%j==0 and b%j ==0:
            # common_divisor= j
            print(f"最大公約數:{j}")
            break
common_num(in_int(),in_int())

定義in_int()函數,提示用戶一直輸入,直到輸入正確的整數爲止

# 定義in_int()函數,提示用戶一直輸入正確的整數爲止
def in_int():
    while True:
        num = input("請輸入整數:")
        if num.isdigit():
            return int(num)
        print("重新輸入!")

規則轉換,遞歸遊戲

# 1、輸入一段字符判斷是大寫,還是小寫。若是小寫,轉換爲大寫,若是大寫,轉換爲小寫
#
list_a_z = [chr(i) for i in range(97, 123)]
list_A_Z = [chr(i) for i in range(65, 91)]
def in_char():
    while True:
        list_char = list(input("請輸入一段字符:"))
        for i in range(len(list_char)-1):
            if list_char[i] in list_a_z:
                list_char[i]= list_A_Z[list_a_z.index(list_char[i])]
            if list_char[i] in list_A_Z:
                list_char[i] = list_a_z[list_A_Z.index(list_char[i])]
        print(str(list_char))
        return
# in_char()
# 2、一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數
# 是多少, 用遞歸算法實現。
#
list_2 = [1,1,2,3,5,8,13,21,34]
for i in range(30-len(list_2)):
    list_2.append(list_2[-1] + list_2[-2])
print(list_2)


# 3、請編程實現對一個數組的排序,結果從大到小
#
def int_rank():
    num_list = [1,8,4,3,9]
    rank_list=[]
    num_list.append(in_int())
    for i in range(len(num_list)):
        rank_list.append(max(num_list))
        num_list.remove(max(num_list))
    print(rank_list)
# int_rank()

最有趣的畫規則圖形小遊戲它又來了!

# 4、接收一個整數(1-26之間),打印A-Z之間圖形。如接收26,則打印如下圖形
#      (char)65-->A   (char)66-->B
#      以此類推
#                                    A
#                                   BBB
#                                  CCCCC
#                                 DDDDDDD
#                                EEEEEEEEE
#                               FFFFFFFFFFF
#                              GGGGGGGGGGGGG
#                             HHHHHHHHHHHHHHH
#                            IIIIIIIIIIIIIIIII
#                           JJJJJJJJJJJJJJJJJJJ
#                          KKKKKKKKKKKKKKKKKKKKK
#                         LLLLLLLLLLLLLLLLLLLLLLL
#                        MMMMMMMMMMMMMMMMMMMMMMMMM
#                       NNNNNNNNNNNNNNNNNNNNNNNNNNN
#                      OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
#                     PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
#                    QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
#                   RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
#                  SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
#                 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
#                UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
#               VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
#              WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
#             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#            YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
#           ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
#
def in_1_26():
    while True:
        score = input("請輸入1-26(打印行數):")
        if score.isdigit() and 1 <= int(score) <= 26:
            return int(score)
        print("重新輸入!")
def figure_A_Z():
    n = in_1_26()
    for i in range(1, n + 1):
        print(" " * (n - i) + chr(64 + i) * (2 * i - 1))
figure_A_Z()
 5. 鍵盤輸入一個整數(0-9之間),顯示如下圖形(n=5)
#     12345
#      2345
#       345
#        45
#         5
#
# def figure_0_9():
#     n_5 = in_int()
#     if n_5 >9 or n_5<0:
#             print("暫只能滿足0-9之間打印!")
#     else:
#         for j in range(5):
#             for i in range(j, 6):
#                 if i <= j:
#                     print(" " * j, end="")
#                 else:
#                     print(chr(48 + i), end="")
#             print()
# figure_0_9()
# 6、輸入一個奇數顯示以下圖型(如:num=5)
#  *****            " ",0,*,5
#   ***            " ",1,*,3
#    *            " ",2,*,1
#   ***            " ",1,*,3
#  *****            " ",0,*,5
# def figure_odd():
#     n_11 = in_int()
#     if n_11 % 2 == 0:
#         print("輸入值非奇數無法打印!")
#     else:
#         for i in range(n_11):
#             if i <= n_11 // 2:
#                 print(" " * i + "*" * (n_11 - i * 2))
#             else:
#                 print(" " * (n_11 - i - 1) + "*" * (i * 2 - n_11 + 2))
#             pass
#         pass


# 編程實現如下圖列出的圖形。(放在此處作爲上題參考!)
#   *
#  ***
#  *****
# *******
#  *****
#   ***
#   *
# n_11 = int(input("請輸入奇位行數:"))
# if n_11 % 2==0:
#     print("無法打印!")
# else:
#     for i in range(n_11):
#         if i <= n_11 // 2:
#             print(" " * (n_11 // 2 - i) + "*" * (2 * i + 1))
#         else:
#             print(" " * (i - n_11 // 2) + "*" * ((n_11 - i) * 2 - 1))
#         pass
#     pass
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章