題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
分析1:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。
result =
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)
:100
+ j*
10+ k)
print
(result)
# 列印資料結果
print
(len
(result)
)#列印資料個數
分析2:根據排列組合,從1,2,3,4這四個數中,任意取出三個數組成乙個三位數,並且每一位都不能重複,正好適用排列組合的方式取三次數字。
def
get_value
(n):
if n ==1:
return n
else
:return n*get_value(n-1)
defget_last_value
(n,m)
: first_item = get_value(n)
print
("n:%s value:%s"
%(n,first_item)
) second_item = get_value(m)
print
("m:%s value:%s"
%(m,second_item)
) third_iterm = get_value(n-m)
print
("(n-m):%s value:%s"%(
(n-m)
,third_iterm)
)return first_item/
(second_item*third_iterm)
if __name__ ==
"__main__"
: final_result = get_last_value(4,
1)*get_last_value(3,
1)*get_last_value(2,
1)# 根據排列組合取三次的組合
print
(final_result)
#這種方式只是獲得了有多少種組合,但是沒有給出具體的數值
補充:利用python計算c(n,m)
( nm
)\begin n\\ m\end
(nm
) = n!m
!∗(n
−m)!
\frac
m!∗(n−
m)!n
!
import math
n,m =
map(
int,
input()
.split())
print
(math.factorial(n)
//(math.factorial(m)
*math.factorial(n-m)
))
Python練習100題二
題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部分,可可提成7.5 20萬到40萬之間時,高於20萬元的部分,可提成5 40萬到60萬之間時高於40萬元的部分,可提成3 60萬到100萬...
python練習100例 Python練習100例
filename cnt 0 count the sum of result fori inrange 1,5 forj inrange 1,5 fork inrange 1,5 ifi j andi k andj k print i 100 j 10 k cnt 1 print cnt 程式 題目...
python練習100例(一 四)
以後爭取每週更新10個例題 例1 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?m 0for i in range 1 5 for j in range 1 5 for k in range 1 5 if i j and i k and k j m m 1 prin...