天天堅持學習python內容是很重要的,不少人經過看視頻學習,可是隻是喜歡聽老師講課,聽完也都感受本身都懂了,很知足,真的是這樣嗎?你真的懂了嗎?本身能夠作一下小練習測試一下,發現作一個不會一個,爲何呢?小猿圈加加告訴你真相,由於python是一門語言,語言怎麼才能檢驗你真正的掌握呢,那就是練習,不斷地練習,熟能生巧,小猿圈今天給你出一道練習題吧,看一下你會作不?python
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。學習
程序分析:對n進行分解質因數,應先找到一個最小的質數k,而後按下述步驟完成。(1)若是這個質數恰等於n,則說明分解質因數的過程已經結束,打印出便可。(2)若是n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,做爲新的正整數你n,重複執行第一步。(3)若是n不能被k整除,則用k+1做爲k的值,重複執行第一步。測試
#!/usr/bin/python # -*- coding: UTF-8 -*- def reduceNum(n): print '{} = '.format(n), if not isinstance(n, int) or n <= 0 : print '請輸入一個正確的數字 !' exit(0) elif n in [1] : print '{}'.format(n) while n not in [1] : # 循環保證遞歸 for index in xrange(2, n + 1) : if n % index == 0: n /= index # n 等於 n/index if n == 1: print index else : # index 必定是素數 print '{} *'.format(index), break reduceNum(90) reduceNum(100)
以上實例輸出結果爲:code
90 = 2 * 3 * 3 * 5orm
100 = 2 * 2 * 5 * 5視頻
方法二:遞歸
#!/usr/bin/python3 x = int(input("是否進入循環?是:1, 否:0\n")); while(x): n = int(input("請輸入一個正整數:")); print ("%d = " %n , end = ''); while n not in [1]: for index in range(2, n+1): if n % index == 0: n = int(n/index); if n == 1: print("%d " %index , end = ''); else: print("%d * " %index , end = '') break; print(); x = int(input("是否進入循環?是:1, 否:0\n"));
輸出測試以下所示:get
是否進入循環?是:1, 否:0input
1it
請輸入一個正整數:90
90 = 2 * 3 * 3 * 5
是否進入循環?是:1, 否:0
1
請輸入一個正整數:100
100 = 2 * 2 * 5 * 5
是否進入循環?是:1, 否:0
0
一個python2和一個python3的實現方法,這兩種都感受是個不錯的方法,先別看答案,本身先根據題目結合本身的思路練習一下,卡在哪一個點,寫不出來再看看答案,只有這樣才能進步,想作跟多練習題的,能夠去小猿圈練習一下,但願有所提升!