python基礎練習100題(1-10)

1. 有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?

if __name__ == '__main__':
    # 1:題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
    count = 0
    for i in range(1, 5):
        for j in range(1, 5):
            for k in range(1, 5):
                if i != j and i != k and j != k:
                    count += 1
                    # 輸出語句可以屬於逗號分隔開輸出很多個參數
                    print(i, j, k)
    print(count)

2. 企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?

其實我們可以對中間結果進行累加即可,在循環中對應更新相應的值即可,其中使用到了將str類型的數據轉爲int類型數據的int方法:

if __name__ == '__main__':
    # input輸入的是str類型, 使用str方法將其轉爲int類型
    net = int(input("淨利潤: "))
    arr = [1000000, 600000, 400000, 200000, 100000, 0]
    rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
    res = 0
    # 使用enumerate迭代會比較方便
    for index, cur in enumerate(arr):
        if net >= cur:
            res += (net - cur) * rat[index]
            net = arr[index]
    print(res)

3. 一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

其實是需要分析出具體的過程

if __name__ == '__main__':
    # 3:題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
    for i in range(1, 85):
        if 168 % i == 0:
            j = 168 // i;
            if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:
                m = (i + j) // 2
                n = (i - j) // 2
                x = n * n - 100
                print(x)

4. 輸入某年某月某日,判斷這一天是這一年的第幾天?

int函數將列表中str類型的元素轉爲int類型,使用str可以將int類型數據轉爲str類型

if __name__ == '__main__':
    # 4:題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
    # 使用split函數進行分隔日期, split函數分隔之後得到的是list列表, 使用int函數將列表中str的數據轉爲int類型
    date = input("請輸入日期: ").split("/")
    # print(type(date))
    # print(date)
    isleap = 0
    # 判斷是否是閏年, 使用下表訪問列表內容
    if (int(date[0]) % 4 == 0 and int(date[0]) % 400 != 0) or (int(date[0]) % 400 == 0):
        isleap = 1
    # 每個月的天數, 使用列表來表示, 感覺列表是python中很重要的數據結構, 優點類似於數組, 但是與數組不同的是列表可以修改
    month = [31, 28, 31, 30, 31, 20, 31, 31, 30, 31, 30, 31]
    i, m, res = 0, 1, 0
    while m < int(date[1]):
        res += month[i]
        i += 1
        m += 1
    res = res + int(date[2])
    if int(date[1]) > 2: res += isleap
    print(res)

5. 輸入三個整數x,y,z,請把這三個數由小到大輸出

split函數對輸入的str字符串使用符號進行分隔,返回list列表,使用sort函數對列表進行排序,reverse可以定義升序還是降序排列

if __name__ == '__main__':
    # input函數返回的是str類型,可以使用print(type(input()))來輸出具體函數的返回值類型, split函數返回的是列表
    res = input().split(" ")
    # 使用sort函數對其進行排序, 默認是從小到大進項排序, 可以添加reverse=True對其從大到小進行排序
    res.sort()
    print(res)

6. 斐波那契數列

class Solution:
    # 求解第n個斐波那契數列
    def fib(self, n: int)->int:
        a, b = 1, 1
        for i in range(0, n - 2):
            # python支持使用逗號表達式進行分別賦值
            a, b = b, a + b
        return b


if __name__ == '__main__':
    # 創建對象並且調用對象中的方法
    print(Solution().fib(int(input())))

7. 將一個列表的數據複製到另一個列表中

if __name__ == '__main__':
    a = [1, 2, 3, 4]
    # 使用list[:]來複制列表
    b = a[:]
    b[0] = 2
    print(a)
    print(b)

8. 輸出 9*9 乘法口訣表

注意輸出語句的格式化輸出語句的使用,還有一個點是注意使用print("")實現輸出一行數據再換行

if __name__ == '__main__':
    for i in range(1, 10):
        for j in range(1, i + 1):
            # 使用格式化進行輸出數據, end=" "表示輸出數據的時候不輸出換行
            print("%2d * %2d = %2d" %(i, j, i * j), end=" ")
        # 使用下面的語句可以輸出換行
        print("")

9. 暫停一秒輸出

使用 time 模塊的 sleep() 函數

import time

if __name__ == '__main__':
    nums = []
    for i in range(10):
        nums.append(i + 1)
        # 暫停一秒
        time.sleep(1)
        print(i)
    print(nums)

10. 暫停一秒輸出,並格式化當前時間

使用time模塊中的strftime函數進行格式化時間,主要是熟悉time模塊中的各個方法

import time, datetime
if __name__ == '__main__':
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    # 暫停一秒
    time.sleep(1)
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章