日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python基础练习题合集

發布時間:2025/3/20 python 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python基础练习题合集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.有一個數據list of dict如下:

a = [{"test1": "123456"},{"test2": "123456"},{"test3": "123456"},]

寫入到本地一個txt文件,內容格式如下:

test1,123456test2,123456test3,123456

解題思路

  • 打開文件
  • 循環列表,提取字典
  • 提取key,value
  • 寫入文件

答案

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' lists = [{"yoyo1": "111111"},{"yoyo2": "222222"},{"yoyo3": "333333"}, ]with open("test.txt", "w+", encoding="utf-8") as f:for data in lists:for key, value in data.items():f.write(f"{key},{value}\n")

2.

a = [1, 2, 3, 4, 5] b = ["a", "b", "c", "d", "e"]

如何得出c = [“a1”, “b2”, “c3”, “d4”, “e5”]

解題思路

  • a、b兩個列表長度一致,獲取長度
  • 一個for循環,每次獲取同下標值
  • 字符串拼接,添加到c列表

答案

a = [1, 2, 3, 4, 5] b = ["a", "b", "c", "d", "e"] c = [] # 方案一 for i in a:inx = a.index(i)d = b[inx]if d != -1:c.append(f"{d}{i}") print(c)# 方案二 c = [] for i in range(0, len(a)):a1 = a[i]b1 = b[i]c.append(f"{b1}{a1}") print(c)

3.寫一個小程序:控制臺輸入郵箱地址(格式為 username@companyname.com), 程序識別用戶名和公司名后,將用戶名和公司名輸出到控制臺。

要求:

  • 校驗輸入內容是否符合規范(xx@polo.com), 如是進入下一步,如否則拋出提 示"incorrect email format"。注意必須以.com 結尾
  • 可以循環“輸入–輸出判斷結果”這整個過程
  • 按字母 Q(不區分大小寫)退出循環,結束程序
  • 解題思路

    • 固定以.com結尾,用正則匹配
    • 以 @ 和 . 分割字符串
    • 提取username和companyname

    答案

    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' while True:email = input("請輸入郵箱:")if email.upper() == "Q":breakres = re.findall(".com$", email)if not res:print("incorrect email format")temp = email.split("@")name = temp[0]com = temp[1].split(".")[0]print(f"username:{name} , companyName:{com}")

    4.如果一個 3 位數等于其各位數字的立方和,則稱這個數為水仙花數。

    例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個水仙花數

    那么問題來了,求1000以內的水仙花數(3位數)

    解題思路

    • int轉字符串序列,獲取到每一位數
    • 調用math.pow函數求立方和
    • 三個數字立方和相加

    答案

    lists = [] for i in range(101, 1000):i = str(i)i1, i2, i3 = int(i[0]), int(i[1]), int(i[2])if int(i) == int(math.pow(i1, 3) + math.pow(i2, 3) + math.pow(i3, 3)):lists.append(i)print(lists)

    5.打印99乘法表

    解題思路

    • 外層循環,獲取被乘數
    • 內層循環,獲取乘數

    答案

    for i in range(1, 10):strs = ""for j in range(1, i + 1):strs += f"{i}*{j}={i * j} "print(strs)

    6.問題1.對列表a 中的數字從小到大排序,問題2.排序后去除重復的數字

    a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]

    解題思路
    非算法方案

    • 內置排序函數
    • 內置去重函數
    • 內置列表函數

    算法方案

    • 冒泡算發排序
    • 內置去重函數
    • 內置列表函數

    答案

    # 非算法方案 a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 6, 8] a = sorted(a) a = set(a) a = list(a) print(a)# 算法方案 a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 6, 8] for i in range(0, len(a) - 1):for j in range(0, len(a) - 1 - i):if a[j] > a[j + 1]:a[j], a[j + 1] = a[j + 1], a[j]a = set(a) a = list(a) print(a)

    7.如果有一個列表a=[1,3,5,7,11]

    問題:
    1如何讓它反轉成[11,7,5,3,1]
    2.取到奇數位值的數字,如[1,5,11]

    解題思路

    問題一:非算法方案

    直接調用內置函數或切片

    問題一:算法方案

    • for循環,循環次數取列表長度的一半
    • 頭尾對稱位置的值互換

    問題二

    切片,設置步長

    答案

    """ 如果有一個列表a=[1,3,5,7,11] 問題:1如何讓它反轉成[11,7,5,3,1] """ # 非算法方案一 a = [1, 3, 5, 7, 11] a = a[::-1] print(a)# 非算法方案二 a = [1, 3, 5, 7, 11] a.reverse() print(a)# 算法 a = [1, 3, 5, 7, 11] lens = len(a) for i in range(0, int(lens / 2)):a[i], a[lens - i - 1] = a[lens - i - 1], a[i] print(a)""" 如果有一個列表a=[1,3,5,7,11] 問題:2.取到奇數位值的數字,如[1,5,11] """ a = [1, 3, 5, 7, 11] a = a[::2] print(a)

    8.要求:判斷數組元素是否對稱。

    例如[1,2,0,2,1],[1,2,3,3,2,1]這樣的都是對稱數組用Python代碼判斷,是對稱數組打印True,不是打印False,如:x = [1, "a", 0, "2", 0, "a", 1]

    解題思路

    • 循環取值,循環次數只需要列表長度的一半
    • 每次取頭尾對稱下標的值比較

    答案

    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' a, b, c = [1, 2, 0, 2, 1], [1, 2, 3, 3, 2, 1], [1, 2, 3, 4, 5]def duicheng(lists):lens = len(lists)flag = Truefor i in range(0, int(lens / 2)):if lists[i] != lists[lens - 1 - i]:flag = Falsebreakprint(flag)duicheng(a) duicheng(b) duicheng(c)

    9.已知一個數列:1、1、2、3、5、8、13、。。。。的規律為從 3 開始的每一項都 等于其前兩項的和,這是斐波那契數列。

    求滿足規律的 100 以內的所以數據

    解題思路

    • 初始化列表[1,1]
    • 循環,從第三個下標開始的值都等于前一位的值+前前一位的值
    • 若新的值已大于100則跳出循環

    答案

    a = [1, 1] for i in range(2, 100):sum = a[i - 1] + a[i - 2]if sum > 100:breaka.append(sum) print(a)

    10.使用列表生成式語法,將列表中[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的數

    解題思路

    列表生成式 + 三元表達式

    答案

    a = [1, 3, -3, 4, -2, 8, -7, 6] a = [x for x in a if x > 0] print(a)

    11.如果一個正整數等于除它本身之外其他所有除數之和,就稱之為完全數。

    例如:
    6是完全數,* 因為6 = 1+2+3;下一個完全數是28 = 14+7+4+2+1。
    求1000以下的完全數

    解題思路

    • 外循環6-1000以內的數字
    • 內循環當前數字,得到所有整除數,并添加到一個列表
    • 列表求和比較當前數字是否一致

    答案

    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' all = [] for num in range(6, 1001):lists = []for n in range(1, num):if num % n == 0:lists.append(n)if sum(lists) == num:all.append(num) print(all)

    12.請寫一個函數find_odd,參數是1個列表,請返回該列表中出現奇數次的元素

    比如

    find_odd([1, 1, 2, -2, 5, 2, 4, 4, -1, -2, 5]) ? -1 find_odd([20, 1, 1, 2, 2, 3, 3, 5, 5, 4, 20, 4, 5]) ? 5 find_odd([10]) ? 10

    解題思路

    • 循環列表
    • 調用列表內置統計函數計算當前元素出現次數
    • 出現次數模2是否不等于0

    答案

    def find_odd(lists):res = []for i in lists:if lists.count(i) % 2 != 0:if i not in res:res.append(i)print(res)lists = [1, 1, 2, -2, 5, 2, 4, 4, -1, -2, 5] list1 = [20, 1, 1, 2, 2, 3, 3, 5, 5, 4, 20, 4, 5] list2 = [10, 1, 1, 1, 2, 2, 10, 5] find_odd(lists) find_odd(list1) find_odd(list2)

    13.寫一個函數,該函數 參數為1個字符串,請分析并返回包含字符串中所有大寫字母索引的有序列表。

    比如

    indexOfCaps("eDaBiT") ? [1, 3, 5] indexOfCaps("eQuINoX") ? [1, 3, 4, 6] indexOfCaps("determine") ? []

    解題思路

    • 字符串也是序列,可以循環獲取每個字符
    • 調用字符串內置函數判斷是否大寫

    答案

    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def indexOfCaps(strs):res = []num = 0for i in strs:if i.isupper():res.append(num)num += 1print(res)indexOfCaps("eDaBiT") indexOfCaps("eQuINoX") indexOfCaps("determine")

    14.請寫一個函數,該函數 參數為數字列表,請算出另外一個列表,里面每個元素依次是參數列表里面元素的累計和。

    比如 參數為[1, 2, 3, 4]
    結果計算方法為[1, 1 + 2, 1 + 2 + 3, 1 + 2 + 3 + 4]
    返回結果就應該是[1, 3, 6, 10]

    解題思路

    • 外循環獲取列表每個元素
    • 內循環獲取當前元素and 之前的所有元素,最后相加
    • 為了不影響原列表的值,需要新創建一個列表來存放相加后的值

    答案

    def count_test(lists):res = []lens = len(lists)for i in range(0, lens):res.append(lists[i])for j in range(0, i):res[i] += lists[j]print(res)lists = [1, 2, 3, 4] count_test(lists)

    15.請寫一個函數,該函數 參數為一個字符串,請驗證該字符串是否是一個合法的電話號碼,合法返回True,否則返回False

    規則如下
    1、該字符串必須全部都是數字。
    2、該字符串長度為11位。
    3、該字符必須以數字1開頭。

    比如

    validate_phone("13423445566") ? True validate_phone(".23rfs") ? False

    解題思路

    正則匹配,有則True,無則False

    答案

    def validate_phone(strs):res = re.findall("^1[0-9]{10}", strs)if res:return Truereturn Falseprint(validate_phone("13423445566")) print(validate_phone(".23rfs"))

    16.寫一個函數replace,該函數參數是兩個字符串,第一個參數給出一個源,第二個參數是指定范圍。

    要求該函數將 第一個參數里面的字符串中 落在第二個參數指定范圍內的字符串替換為 # 號

    比如

    replace("abcdef", "c-e") ? "ab###f" replace("rattle", "r-z") ? "#a##le" replace("microscopic", "i-i") ? "m#croscop#c" replace("", "a-z") ? ""

    解題思路

    • 先將指定范圍的字母提取出來
    • Python里面,字符是可以直接比較大小的
    • 通過直接比較,將在指定范圍的字符 replace 成 #

    答案

    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def replace(strs, round):start, end = round.split("-")for i in strs:if i >= start and i <= end:strs = strs.replace(i, "#")print(strs)replace("abcdef", "c-e") replace("rattle", "r-z") replace("microscopic", "i-i") replace("", "a-z")

    17.寫一個函數alphabet_index,該函數參數是1個字符串,要求該函數返回一個新字符串,里面是 參數字符串中每個字母依次對應的 數字。如果是非字母,則忽略它

    字母"a" 和"A" 都對應 1, "b"和"B"都對應2, "c"和"C"對應3, 依次類推

    比如

    alphabet_index("Wow, does that work?") ? "23 15 23 4 15 5 19 20 8 1 20 23 15 18 11"alphabet_index("The river stole the gods.") ? "20 8 5 18 9 22 5 18 19 20 15 12 5 20 8 5 7 15 4 19"alphabet_index("We have a lot of rain in June.") ? "23 5 8 1 22 5 1 12 15 20 15 6 18 1 9 14 9 14 10 21 14 5"

    解題思路

    • 將字符串統一為大寫字母
    • 需要設置一個對比值
    • 大寫A的ASCII碼為65,但A對應1,所以設置一個對比值為64
    • 循環字符串,如果是字母則換算出它的ASCII碼,再減去對比值

    答案

    def alphabet_index(strs):strs = strs.upper()temp = 64res = ""for i in strs:if i.isalpha():res += str(ord(i) - temp) + " "print(res)alphabet_index("Wow, does that work?") alphabet_index("The river stole the gods.") alphabet_index("We have a lot of rain in June.")

    總結

    以上是生活随笔為你收集整理的Python基础练习题合集的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。