注意:我用的python2.7,大家如果用Python3.0以上的版本,請記得在print()函數哦!如果因為版本問題評論的,不做回復哦!!!
1.題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。
程序源代碼:
# -*- coding: UTF-8 -*-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): print i,j,k
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 來計算表達式的值,也就是獎金總數。就是把獎金疊加起來,具體算法還是要在紙上計算,這種方法適用于初學編碼的人,比如我,用最笨的數學思路解決問題,就是說在數學上你是按照什么方法做的,然后把他轉化成代碼,就比較容易理解了。
# -*- coding: UTF-8 -*-while True: I = input("pls input the lirun:") if I <= 10: a = I * 0.01 print a elif I <= 20 and I > 10: b =0.25 + I * 0.075 print b elif I <= 40 and I > 20: c = 0.75 + I * 0.05 print c elif I <= 60 and I > 40: d = 0.95 + I * 0.03 print d elif I <= 60 and I > 100: e = 2 + I * 0.015 print e else: f = 2.95 + I * 0.01 print f方法二:這種方法就比較難懂了,適合于基礎好的人。
# -*- coding: UTF-8 -*-I = int(raw_input('凈利潤:'))#這應該就是各個分界值了,把它們放在列表里方便訪問arr = [1000000,600000,400000,200000,100000,0] #這是各個分界值所對應的獎金比例值rat = [0.01,0.015,0.03,0.05,0.075,0.1] #這是總獎金的初始值r = 0 #有6個分界值當然要循環6次 for idx in range(0,6): if I > arr[idx]: r = r + (I - arr[idx]) * rat[idx] print (I - arr[idx]) * rat[idx] I = arr[idx]print r3.題目:一個整數,它加上100和加上268后都是一個完全平方數,請問該數是多少?
程序分析:在10000以內判斷,將該數加上100后再開方,加上268后再開方,如果開方后的結果滿足如下條件,即是結果。這里要用到數學中的開方函數 sqrt。
新聞熱點
疑難解答