Python3 入門經典100例 | 菜鳥教程 1-10題

Python3 100例 | 菜鳥教程 習題鏈接
題1:
題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
方法一:

import itertools
l = list(itertools.permutations([1,2,3,4],3))
print(len(l))
print(l)
# 24
# [(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)]

方法二:

l = []
for i in range(1,5):
    for j in range(1,5):
        for k in range(1, 5):
            if i != j and j != k and i != k:
                l2 = []
                l2.append(i)
                l2.append(j)
                l2.append(k)
                l.append(l2)
print(len(l))
print(l)
# 24
# [[1, 2, 3], [1, 2, 4], [1, 3, 2], [1, 3, 4], [1, 4, 2], [1, 4, 3], [2, 1, 3], [2, 1, 4], [2, 3, 1], [2, 3, 4], [2, 4, 1], [2, 4, 3], [3, 1, 2], [3, 1, 4], [3, 2, 1], [3, 2, 4], [3, 4, 1], [3, 4, 2], [4, 1, 2], [4, 1, 3], [4, 2, 1], [4, 2, 3], [4, 3, 1], [4, 3, 2]]

題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,求應發放獎金總數?
方法一:

def Profit(l):
    l1 = 0.1 * 100000
    l2 = l1 + 0.075 * (l - 100000)
    l3 = l2 + 0.05 * (l - 200000)
    l4 = l3 + 0.03* (l - 400000)
    l5 = l4 + 0.015 * (l - 600000)
    l6 = l5 + 0.01 * (l - 1000000)
    if l <= 100000:
        return l * 0.1
    elif l <= 200000:
        return l2
    elif l <= 400000:
        return l3
    elif l <= 600000:
        return l4
    elif l <= 1000000:
        return l5
    else:
        return l6
Profit(160000)

方法二:

def Profit(l):
    money = [1000000, 600000, 400000, 200000, 100000, 0]
    rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
    profit = 0
    for i in range(0, 6):
        if l > money[i]:
            profit += (l-money[i])*rat[i]
            l = money[i]
    return profit
Profit(160000)

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

import math
def intNum(n):
    k = int(math.sqrt(n))
    return n == k*k
for i in range(-100, 10000000):
    if intNum(i+100):
        if intNum(i+268):
            print(i)

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

year = int(input('輸入年:'))
month = int(input('輸入月:'))
day = int(input('輸入日:'))
month_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
day_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
s1 = 0
s = 0
for i in day_list[:(month-1)]:
    s1 += i
s = s1 + day
if year % 4== 0 and month >=3:
    s = s + 1
print('今天是今年的第%d天'%s)

題5:
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

x = int(input('輸入第一個數:'))
y = int(input('輸入第二個數:'))
z = int(input('輸入第三個數:'))
l = [x, y, z]
l.sort() #l.sort(reverse=True)從大到小排序
print(l)

題6:
題目:斐波那契數列。

程序分析:斐波那契數列(Fibonacci sequence),又稱黃金分割數列,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……。

在數學上,費波那契數列是以遞歸的方法來定義:
F0 = 0 (n=0)
F1 = 1 (n=1)
Fn = F[n-1]+F[n-2] (n=>2)

方法一:

def fibSeq(n):
    s = 0
    a = 0 #表示F(n-2)
    b = 1 #表示F(n-1)
    if n==0 or n==1:
        return n
    for i in range(2, (n+1)):
        s = a + b
        a = b
        b = s
    return s
fibSeq(10)

方法二:遞歸

def fibSeq(n):
    if n==0 or n==1:
        return n
    return fibSeq(n-1) + fibSeq(n-2)
fibSeq(10)

題7:
題目:將一個列表的數據複製到另一個列表中。
方法一:

a = [1, 2, 3]
b = a
print(b)

方法二:(或許應該用方法二)

a = [1, 2, 3]
b = a[:]
print(b)

題8:
題目:輸出 9*9 乘法口訣表。

for i in range(1, 10): # 控制行
    for j in range(1, i+1): # 控制列
        print(j, 'x', i, '=', j*i, sep='', end='\t') # end='\t'相當於每次打印結束不換行,而是在末尾添加\t(tab);
        # 而sep=''表示每個打印的字符之間用‘’內的內容銜接,去掉默認帶有的空格
    print() # 每打印完一行就最最後打印一個空白,相當於屏蔽掉前面的'\t',完成換行操作(for循環自動換行打印)

題9:
題目:暫停一秒輸出。

程序分析:使用 time 模塊的 sleep() 函數。

import time
l = [1, 2, 3, 4]
for i in l:
    print(i)
    time.sleep(1)

題10:
題目:暫停一秒輸出,並格式化當前時間。

import time,datetime
for i in range(1000):
    print(datetime.datetime.now())
    print(datetime.datetime.now().strftime("%Y-%m-%d %H.%M.%S"))
    time.sleep(1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章