Python3算法基础练习:编程100例(1~5)
Python3基礎練習:編程100例(1~5)
- 1、無重復數字
- 2、發放獎金
- 3、完全平方數
- 4、判斷這一天是這一年的第幾天?
- 5、三個數從小到大輸出
1、無重復數字
題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少?
分析:多層遍歷
代碼:
total=0 for i in range(1,5):for j in range(1,5):for k in range(1,5):if( i != k ) and (i != j) and (j != k):total = total + 1print (i,j,k)print('一共'+str(total)+'種')結果:
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 一共24種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,求應發放獎金總數?
代碼:
i = int(input('凈利潤:')) arr = [1000000,600000,400000,200000,100000,0] rat = [0.01,0.015,0.03,0.05,0.075,0.1] r = 0 for idx in range(0,6):if i>arr[idx]:r+=(i-arr[idx])*rat[idx]print ((i-arr[idx])*rat[idx])i=arr[idx] print (r)結果:
凈利潤:160000 4500.0 10000.0 14500.03、完全平方數
題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
分析:
這是一道數學題!
假設該數為 x。
1、則:x + 100 = n2, x + 100 + 168 = m2
2、計算等式:m2 - n2 = (m + n)(m - n) = 168
3、設置: m + n = i,m - n = j,i * j =168,i 和 j 至少一個是偶數
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶數,要么都是奇數。
5、從 3 和 4 推導可知道,i 與 j 均是大于等于 2 的偶數。
6、由于 i * j = 168, j>=2,則 1 < i < 168 / 2 + 1。
7、接下來將 i 的所有數字循環計算即可。
代碼:
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 : # n = (i- j) / 2 所以 i > jm = (i + j) / 2n = (i - j) / 2x = n * n - 100print(x)結果:
-99 21 261 15814、判斷這一天是這一年的第幾天?
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
分析:以2021年4月28日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于2時需考慮多加一天
代碼:
year = 2021 month = 4 day = 28months = (0,31,59,90,120,151,181,212,243,273,304,334) if 0 < month <= 12:sum = months[month - 1] else:print ('data error') sum += day # 閏年 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)) and (month > 2):sum += 1 print ('it is the %dth day.' % sum)結果:it is the 118th day.
5、三個數從小到大輸出
題目:有三個整數x,y,z,請把這三個數由小到大輸出。
代碼:
nums = [] for i in range(3):x = int(input('num:\n'))nums .append(x) nums.sort() print (nums )結果:輸入 5 10 3;輸出 3 5 10
總結
以上是生活随笔為你收集整理的Python3算法基础练习:编程100例(1~5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双指针算法(四):力扣 88.合并两个有
- 下一篇: pycharm 修改成中文教程(图文简单