1. 程式人生 > >Python程式設計練習題(基礎)

Python程式設計練習題(基礎)

例項一:數學計算
簡述:這裡有四個數字,分別是:1、2、3、4
提問:能組成多少個互不相同且無重複數字的三位數?各是多少?
Python解題思路分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。(for迴圈)

程式碼實現:

list = []   #定義一個空的列表用來儲存生產的數字
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:
                num = i*100+j*10+k     
                print(num)
                list.append(num)   #將生成的數字加入到list列表中
                result_num = len(list)   #統計列表中元素的個數
print("可以組合的個數為%d"%(result_num))
例項二:關於數軸和長整型資料型別的練習


簡述:企業發放的獎金根據利潤提成。利潤(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,求應發放獎金總數?
Python解題思路分析:請利用數軸來分界及定位。並要注意定義時需要把獎金定義成長整型的資料型別。

程式碼實現:

profit = int(input("請輸入您的淨利潤:"))
arr = [1000000,600000,400000,200000,100000,0]
Money_rate = [0.01,0.015,0.03,0.05,0.075,0.1]
bonus = 0
for i in range(0,6):  
    if profit > arr[i]:    #判斷淨利潤的範圍
        bonus += (profit-arr[i])*Money_rate[i]   #獎金的計算
        print((profit-arr[i])*Money_rate[i])
        profit = arr[i]   #重新複製淨利潤,進行低階段判斷

print(bonus)

例項三:平方數的操作練習
簡述:一個整數,它加上100和加上268後都是一個完全平方數
提問:請問該數是多少?
Python解題思路分析:在10000以內判斷,將該數加上100後再開方,加上268後再開方,如果開方後的結果滿足如下條件,即是結果。

說明:sqrt() 方法返回數字x的平方根,sqrt()是不能直接訪問的,需要匯入 math 模組,通過靜態物件呼叫該方法

import math
for i in range(10000):
    x = int(math.sqrt(i+100))
    y = int(math.sqrt(i+268))
    if x * x == i + 100 and y * y == i + 268:
        
print(i)
例項四:日期計算,程式設計練習
簡述:要求輸入某年某月某日
提問:求判斷輸入日期是當年中的第幾天?
Python解題思路分析:我們就以3月5日這一天為例。首先把前兩個月的加起來,然後再加上5天即本年的第幾天。這裡有一種特殊的情況,就是閏月,遇到

這種情況且輸入月份大於2時需考慮多加一天。如果不是很明白,可以看下邊的python原始碼。

year = int(input("請輸入年份:"))
month = int(input("請輸入月份:"))
day = int(input("請輸入天:"))
months = (0,31,59,90,120,151,181,212,243,273,304,334)  #按月份統計該月份前的天數
if 0 < month <= 12:
    sum = months[month-1]
else:
    print("日期輸入錯誤!")
sum += day
a = 0 #定義一箇中間變數
if (year % 400 == 0) or (( year % 4 == 0 ) and ( year % 100 != 0)):  #判斷年份是否是閏年
    a = 1
if (a == 1) and ( month > 2):
    sum += 1
print("今天是第%s天"%sum)