Python 100例(上)
如果你已經把基礎看完,可以嘗試一下看看以下例子了,如果不會做也不要緊,你要嘗試手動把所有的代碼都敲一邊。別嫌麻煩,因為都是從麻煩到簡單的。
實例1:
題目:有1、2、3、4個數字,能組成多少個相互不同且無重復的三位數?都是多少??
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去?掉不滿足條件的排列。
'''
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?(k?!=?j):
????????????????print?i,?j,?k實例1
輸出結果:
1?2?31?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?2View Code
?實例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%提成,從鍵盤輸入當月利潤,求應發放獎金總數?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:
0-10萬提成10%
10-20萬提成7.5%
20-40萬提成5%
40-60萬提成3%
60-100萬提成1.5%
100萬以上1%
思路:
請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
'''
'''
注:如果列表的順序相反,計算結果不一樣
'''
i?=?int(raw_input('input:'))
m?=?[1000000,600000,400000,200000,100000,0]
t?=?[0.01,0.015,0.03,0.05,0.075,0.1]
r?=?0
for?s?in?range(0,6):#循環列表元素數
????if?i>m[s]:#判斷輸入的元素
????????r+=(i-m[s])*t[s]
????????print?(i-m[s])*t[s]
????????i=m[s]
print?rView Code
?輸出結果:
輸入您的利潤:3000005000.0
7500.0
10000.0
22500.0View Code
?實例3:
?題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該書是多少?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:判斷一個數加100是一個數的完全平方數,加168是另一個數的完全平方數。
思路:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后的結果滿足如下條件,即是結果。請看具體分析:
'''
import?math
for?i?in?range(10000):
????x?=?int(math.sqrt(i?+?100))
????y?=?int(math.sqrt(i?+?168))
????if?(x?*?x?==?i?+?100)?and?(y?*?y?==?i?+?168):
????????print?iView Code
?輸出結果:
156View Code?實例4:
題目:輸入某年某年某月某日,判斷這一天是這一年的第幾天?
!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:判斷輸入的日期是本年的第幾天
思路:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊? 情況,閏年且輸入月份大于3時需考慮多加一天:
'''
year?=?int(raw_input('year:\n'))
month?=?int(raw_input('month:\n'))
day?=?int(raw_input('day:\n'))
months?=?[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
leap?=?0
if?(year?%?400?==?0)?or?((year?%?4?==?0)?and?(year?%?100?!=?0)):#判斷是平年還是潤年
????leap?=?1
if?(leap?==?1)?and?(month?>?2):
????sum?+=?1
print?'it?is?the?%dth?day.'?%?sumView Code
輸出結果:
year:2015
month:
12
day:
13
it?is?the?347th?day.View Code
?實例5:
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:輸入三個整數,有小到大進行排序
思路:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
'''
m?=?[]
for?i?in?range(0,3):
????n?=?int(raw_input('input:'))
????m.append(n)
m.sort()#從小到大排序
#m.sort(reverse?=?True)#從大到小排序
print?mView Code
?輸出結果:
input:3input:7
input:1
[1,?3,?7]View Code
?實例6:
題目:斐波那契數列。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:斐波那契數列:0、1、1、2、3、5、8、13、21、34、……。輸出第100個斐波數
思路:根據數列規律可以得出下一個數值都是前兩個數值的和
'''
'''
方法一:
'''
def?fib(n):
????a,b?=?1,1
????for?i?in?range(n-1):
????????a,b?=?b,a+b
????return?a#返回第100個斐波那契數列
print?fib(100)
'''
方法二:
'''
def?fib(n):
????if?n?==?1?or?n?==?2:
????????return?1
????return?fib(n-1)+fib(n-2)
print?fib(100)#如果輸出的結果太大的話會消耗cpu建議小點
'''
方法三:
'''
def?fib(n):
????if?n?==?1:
????????return?[1]
????if?n?==?2:
????????return?[1,?1]
????fibs?=?[1,?1]
????for?i?in?range(2,?n):
????????fibs.append(fibs[-1]?+?fibs[-2])
????return?fibs
#?輸出前?10?個斐波那契數列
print?fib(100)View Code
?輸出結果:
354224848179261915075View Code?實例7:
題目:將一個列表的數據復制到另一個列表中。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
將一個列表的數據復制到另一個列表里
'''
a?=?[1,2,3,4,5,6,7,8,9,0]
b?=?a[:]
print?bView Code
?輸出結果:
[1,?2,?3,?4,?5,?6,?7,?8,?9,?0]View Code?實例8:
題目:輸出9*9乘法口訣表。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:99乘法口訣表
思路:分行與列考慮,共9行9列,i控制行,j控制列。
'''
for?i?in?range(1,10):
????for?j?in?range(1,10):
????????result?=?i?*?j
????????print?'%d?*?%d?=?%?-?3d'%?(i,j,result)#循環的兩個數相乘
????????print?''#兩個循環的間隔View Code
?輸出結果:
1?*?1?=??1?1?*?2?=??2?
1?*?3?=??3?
1?*?4?=??4?
1?*?5?=??5?
1?*?6?=??6?
1?*?7?=??7?
1?*?8?=??8?
1?*?9?=??9?
2?*?1?=??2?
2?*?2?=??4?
2?*?3?=??6?
2?*?4?=??8?
2?*?5?=??10
2?*?6?=??12
2?*?7?=??14
2?*?8?=??16
2?*?9?=??18
3?*?1?=??3?
3?*?2?=??6?
3?*?3?=??9?
3?*?4?=??12
3?*?5?=??15
3?*?6?=??18
3?*?7?=??21
3?*?8?=??24
3?*?9?=??27
4?*?1?=??4?
4?*?2?=??8?
4?*?3?=??12
4?*?4?=??16
4?*?5?=??20
4?*?6?=??24
4?*?7?=??28
4?*?8?=??32
4?*?9?=??36
5?*?1?=??5?
5?*?2?=??10
5?*?3?=??15
5?*?4?=??20
5?*?5?=??25
5?*?6?=??30
5?*?7?=??35
5?*?8?=??40
5?*?9?=??45
6?*?1?=??6?
6?*?2?=??12
6?*?3?=??18
6?*?4?=??24
6?*?5?=??30
6?*?6?=??36
6?*?7?=??42
6?*?8?=??48
6?*?9?=??54
7?*?1?=??7?
7?*?2?=??14
7?*?3?=??21
7?*?4?=??28
7?*?5?=??35
7?*?6?=??42
7?*?7?=??49
7?*?8?=??56
7?*?9?=??63
8?*?1?=??8?
8?*?2?=??16
8?*?3?=??24
8?*?4?=??32
8?*?5?=??40
8?*?6?=??48
8?*?7?=??56
8?*?8?=??64
8?*?9?=??72
9?*?1?=??9?
9?*?2?=??18
9?*?3?=??27
9?*?4?=??36
9?*?5?=??45
9?*?6?=??54
9?*?7?=??63
9?*?8?=??72
9?*?9?=??81View Code
實例9:
題目:暫停一秒輸出。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
暫停以秒輸入
'''
import?time
myD?=?{1:'a',?2:'b',?3:'c',?4:'d',?5:'e',?6:'f',?7:'g'}
for?key,value?in?dict.items(myD):
????print?key,value
????time.sleep(1)#暫停一秒View Code
?輸出結果:
1?a2?b
3?c
4?d
5?e
6?f
7?gView Code
?實例10:
題目:暫停一秒輸入。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
暫停一秒輸出
'''
import?time
print?time.strftime('%Y-%m-%d?%H:%M:%S',time.localtime(time.time()))
time.sleep(1)
print?time.strftime('%Y-%m-%d?%H:%M:%S',time.localtime(time.time()))View Code
?輸出結果:
2016-01-10?23:43:172016-01-10?23:43:18View Code
?實例11:
?題目:古典問題,有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:一對兔子,從出生后第三個月起每個月都會生出一對兔子,小兔子長到三個月又生一對小兔子。假如兔子不死,問每個月兔子總數。
思路:兔子的規律為數列1,1,2,3,5,8,13,21....
'''
f1?=?1
f2?=2
for?i?in?range(1,21):
????print?'%12d?%12d'?%?(f1,f2)
????if?(i?%?2)?==?0:
????????print?''
????f1?=?f1?+?f2
????f2?=?f1?+?f2View Code
?輸出結果:
1????????????2???????????3????????????5
???????????8???????????13
??????????21???????????34
??????????55???????????89
?????????144??????????233
?????????377??????????610
?????????987?????????1597
????????2584?????????4181
????????6765????????10946
???????17711????????28657
???????46368????????75025
??????121393???????196418
??????317811???????514229
??????832040??????1346269
?????2178309??????3524578
?????5702887??????9227465
????14930352?????24157817
????39088169?????63245986
???102334155????165580141View Code
?實例12:
題目:判斷101-200之間有多少個素數,并輸出所有素數。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:判斷101-200之間的所有素數,并輸出
思路:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
'''
h?=?0
leap?=?1
from?math?import?sqrt
from?sys?import?stdout
for?m?in?range(0,201):
????k?=?int(sqrt(m?+?1))
????for?i?in?range(2,k?+?1):
????????if?m?%?i?==?0:
????????????leap?=?0
????????????break
????if?leap?==?1:
????????print?'%-4d'?%?m
????????h?+=?1
????????if?h?%?10?==?0:
????????????print?''
????leap?=?1
print?'The?total?is?%d'?%?hView Code
?輸出結果:
0???1???
2???
3???
5???
7???
11??
13??
17??
19??
23??
29??
31??
37??
41??
43??
47??
53??
59??
61??
67??
71??
73??
79??
83??
89??
97??
101?
103?
107?
109?
113?
127?
131?
137?
139?
149?
151?
157?
163?
167?
173?
179?
181?
191?
193?
197?
199?
The?total?is?48View Code
?實例13:
題目:打印出所有的“水印花數”,所謂“水印花數”是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個“水印花數”,因為153=1的三次方+5的三次方+3的三次方。?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:打印所有“水印數”,例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方
思路:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
'''
for?n?in?range(100,1000):
????i?=?n?/?100?#百位數
????j?=?n?/?10?%?10?#十位數
????k?=?n?%?10??#個位數
????if?n?==?i?**?3?+?j?**?3?+?k?**?3:
????????print?nView Code
?輸出結果:
153370
371
407View Code
?實例14:
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5.
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:將一個正整數分解質因數。例如:輸入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的值,重復執行第一步。
'''
from?sys?import?stdout
n?=?int(raw_input("input?number:"))
print?"n?=?%d"?%?n
for?i?in?range(2,n?+?1):
????while?n?!=?i:
????????if?n?%?i?==?0:
????????????stdout.write(str(i))
????????????stdout.write("*")
????????????n?=?n?/?i
????????else:
????????????break
print?"%d"?%?nView Code
?輸出結果:
input?number:100n?=?100
2*2*5*5View Code
?實例15:
題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-80分之間的用B表示,60分以下的用C表示。?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:利用條件運算符的嵌套來完成成績表。
思路:(a>b)?a:b這是條件運算符的基本例子。
'''
score?=?int(raw_input('input?score:'))
if?score?>=?90:
????grade?=?'A'
elif?score?>=?80:
????grade?=?'D'
elif?score?>=?70:
????grade?=?'C'
elif?score?>=?60:
????grade?=?'D'
else:
????grade?=?'E'
print?'%d?belongs?to?%s'?%?(score,grade)View Code
?輸出結果:
input?score:2626?belongs?to?EView Code
實例16:
題目:輸出指定格式的日期。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
輸入指定格式的日期
'''
import?datetime
if?__name__?==?'__main__':#輸出今日日期,格式為dd/mm/yyyy.更改選項可以查看strftime()方法。
????print(datetime.date.today().strftime('%d/%m/%Y'))
????#創建日期對象
????miyazakiBirthDate?=?datetime.date(1941,?1,?5)
????print(miyazakiBirthDate.strftime('%d/%m/%Y'))
????#日期算術運算
????miyazakiBirthDextDate?=?miyazakiBirthDate?+?datetime.timedelta(days=1)#加一天
????print(miyazakiBirthDextDate.strftime('%d/%m/%Y'))
????#日期替換
????miyazakiFirstBirthday?=?miyazakiBirthDate.replace(year=miyazakiBirthDate.year?+?1)#加一年
????print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))View Code
?輸出結果:
11/01/201605/01/1941
06/01/1941
05/01/1942View Code
?實例17:
題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:輸入一行字符,分別統計出其中英文字母、空格,數字和其他字符的個數。
思路:利用while語句,條件為輸入的字符
'''
import?string
s?=?raw_input('input?a?string:')
letters?=?0
space?=?0
digit?=?0
others?=?0
for?c?in?s:
????if?c.isalpha():
????????letters?+=?1
????elif?c.isspace():
????????space?+=?1
????elif?c.isdigit():
????????digit?+=?1
????else:
????????others?+=?1
print('char?=?%d,?space?=?%d,digit?=?%d,others?=?%d'?%?(letters,space,digit,others))View Code
?輸出結果:
input?a?string:sffq265233!!0aff??dd?gchar?=?10,?space?=?3,digit?=?7,others?=?2View Code
?實例18:
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+222...2(此時共有5個數相加),幾個數相加有鍵盤控制。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。
思路:先計算出每一項的值。
'''
Tn?=?0
Sn?=?[]
n?=?int(raw_input('n?=?:'))
a?=?int(raw_input('a?=?:'))
for?count?in?range(n):#先循環計算每一項的值
????Tn?=?Tn?+?a
????a?=?a?*?10
????Sn.append(Tn)
????print?Tn
Sn?=?reduce(lambda?x,y?:?x?+?y,Sn)#在計算和
print?SnView Code
?輸出結果:
n?=?:9a?=?:6
6
66
666
6666
66666
666666
6666666
66666666
666666666
740740734View Code
?實例19:
?題目:一個數如果恰好等于它的因子之和,這個數就稱為“殼數”。例如6=1+2+3,編程找出1000以內的所有完數。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:找出1000以內的完數,完數就是一個數如果恰好等于它的因子之和,例如:6=1+2+3
思路:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
????(1)如果這個質數各個位之和恰等于n,則說明分解質因數的過程已經結束,打印出即可。
'''
from?sys?import?stdout
for?j?in?range(2,1001):
????k?=?[]
????n?=?-1
????s?=?j
????for?i?in?range(1,j):
????????if?j?%?i?==?0:
????????????n?+=?1
????????????s?-=?i
????????????k.append(i)
????if?s?==?0:
????????print?j
????????for?i?in?range(n):
????????????stdout.write(str(k[i]))
????????print?k[n]View Code
?輸出結果:
6123
28
124714
496
1248163162124248View Code
?實例20:
題目:一個球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高??
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
'''
Sn?=?100.0
Hn?=?Sn?/?2
for?n?in?range(2,11):
????Sn?+=?2?*?Hn
????Hn?/=?2
print?'Total?of?road?is?%f'?%?Sn
print?'The?tenth?is?%f?meter'?%?HnView Code
?輸出結果:
Total?of?road?is?299.609375The?tenth?is?0.097656?meterView Code
?實例21:
?題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,有吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前天剩下的一半零一個。到第十天早上再想吃時,見剩下一個桃子了。求一天共摘了多少。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
思路:采用逆向思維的方法,從后在往前推斷
'''
x2?=?1
for?day?in?range(9,0,-1):
????x1?=?(x2?+?1)?*?2
????x2?=?x1
print?x1View Code
?輸出結果:
1534View Code?實例22:
題目:打印出如下圖案(菱形) :
*
? ? ? ***
? ? ******
? ? ? ***
*?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:打印出如下圖案(菱形):
???*
??********************
??***
???*
思路:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。
'''
from?sys?import?stdout
for?i?in?range(4):
????for?j?in?range(2?-?i?+?1):
????????stdout.write('?')
????for?k?in?range(2?*?i?+?1):
????????stdout.write('*')
for?i?in?range(3):
????for?j?in?range(i?+?1):
????????stdout.write('?')
????for?k?in?range(4?-?2?*?i?+?1):
????????stdout.write('*')
????printView Code
輸出結果:
*??***
?*****
*******
?*****
??***
???*View Code
?實例23:
?題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
思路:根據分子和分母的變化可以發現一些規律。(第三個數的分子和分母,是前兩個分子和分母之和)
'''
'''
方法一:
'''
a?=?2.0
b?=?1.0
s?=?0
for?n?in?range(1,21):
????s?+=?a?/?b
????t?=?a
????a?=?a?+?b
????b?=?t
print?s
'''
方法二:
'''
a?=?2.0
b?=?1.0
s?=?0.0
for?n?in?range(1,21):
????s?+=?a?/?b
????b,a?=?a?,?a?+?b
print?s
s?=?0.0
for?n?in?range(1,21):
????s?+=?a?/?b
????b,a?=?a?,?a?+?b
print?s
'''
方法三:
'''
a?=?2.0
b?=?1.0
l?=?[]
for?n?in?range(1,21):
????b,a?=?a,a?+?b
????l.append(a?/?b)
print?reduce(lambda?x,y:?x?+?y,l)View Code
?輸出結果:
32.660260798632.6602607986
32.360679776
32.2782947888View Code
?實例24:
?題目:兩個兵乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙對為x,y,z三人。以抽簽決定比賽名單。有向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程找到三隊賽手的名單。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
思路:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
'''
for?i?in?range(ord('x'),ord('z')?+?1):
????for?j?in?range(ord('x'),ord('z')?+?1):
????????if?i?!=?j:
????????????for?k?in?range(ord('x'),ord('z')?+?1):
????????????????if?(i?!=?k)?and?(j?!=?k):
????????????????????if?(i?!=?ord('x'))?and?(k?!=?ord('x'))?and?(k?!=?ord('z')):
????????????????????????print?'order?is?a?--?%s\t?b?--?%s\tc?--?%s'?%?(chr(i),chr(j),chr(k))View Code
?輸出結果:
order?is?a?--?z?????b?--?x????c?--?yView Code?實例25:
題目:求1+2!+3!+...+20!的和。?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:求1+2!+3!+...+20!的和。
思路:此程序只是把累加變成了累乘。
'''
'''
方法一:
'''
n?=?0
s?=?0
t?=?1
for?n?in?range(1,21):
????t?*=?n
????s?+=?t
print?'1!?+?2!?+?3!?+?...?+?20!?=?%d'?%?s
''''
方法二:
'''
s?=?0
l?=?range(1,21)
def?op(x):
????r?=?1
????for?i?in?range(1,x?+?1):
????????r?*=?i
????return?r
s?=?sum(map(op,l))
print?'1!?+?2!?+?3!?+?...?+?20!?=?%d'?%?sView Code
輸出結果:
1!?+?2!?+?3!?+?...?+?20!?=?25613274941118203131!?+?2!?+?3!?+?...?+?20!?=?2561327494111820313View Code
?實例26:
題目:利用遞歸方法求5!。?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:利用遞歸方法求5!。
思路:遞歸公式:fn?=?fn_1*4!
'''
def?fact(j):
????sum?=?0
????if?j?==?0:
????????sum?=?1
????else:
????????sum?=?j?*?fact(j?-?1)
????return?sum
for?i?in?range(5):
????print?'%d!?=?%d'?%?(i,fact(i))View Code
?輸出結果:
0!?=?11!?=?1
2!?=?2
3!?=?6
4!?=?24View Code
?實例27:
題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
'''
def?output(s,l):
????if?l?==?0:
????????return
????print?(s[l-1])
????output(s,l-1)
s?=?raw_input('Input?a?string:')
l?=?len(s)
output(s,l)View Code
?輸出結果:
Input?a?string:1235444
4
5
3
2
1View Code
?實例28:
?題目:有5個人坐在一起,問第五個人多少歲?他說比第四個人大兩歲。問第四個人歲數,他說比第三個人大兩歲。問第三個人,又說比第二個人大兩歲。問第二個人,說比第二個人大兩歲。最后問第一個,他說是十歲。請問第五個人多大?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
思路:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四人的歲數,依次類推,推到第一人(10歲),再往回推。
'''
def?age(n):
????if?n?==?1:
????????c?=?10
????else:
????????c?=?age(n-1)?+?2
????return?c
print?age(5)View Code
?輸出結果:
18View Code?實例29:
題目:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
思路:學會分解出每一位數。
'''
x?=?int(raw_input("input?a?number:"))
a?=?x?/?10000
b?=?x?%?10000?/?1000
c?=?x?%?1000?/?100
d?=?x?%?100?/?10
e?=?x?%?10
if?a?!=?0:
????print?"there?are?5?",e,d,c,b,a
elif?b?!=?0:
????print?"there?are?4?",d,c,b,a
elif?c?!=?0:
????print?"there?are?3?",e,d,c
elif?d?!=?0:
????print?"there?are?2?",e,d
else:
????print?"there?are?1",eView Code
?輸出結果:
input?a?number:56819there?are?5??9?1?8?6?5View Code
?實例30:
?題目:一個五位數,判斷他是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
'''
#?x?=?int(raw_input('input?a?number:'))
#?x?=?str(x)
#?for?i?in?range(len(x)/2):
#?????if?x[i]?!=?x[-i?-?1]:
#?????????print?'這不是一個回數'
#?????????break
#?print?'這是一個回數'
x?=?int(raw_input("input?a?number:\n"))
x?=?str(x)
for?i?in?range(len(x)/2):
????if?x[i]?!=?x[-i?-?1]:
????????print?'這不是一個回文數'
????????break
????print?'這是一個回文數'View Code
?輸出結果:
input?a?number:12321
這是一個回文數View Code
?實例31:
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
思路:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。。
'''
letter?=?raw_input("please?input:")
#while?letter??!=?'Y':
if?letter?==?'S':
????print?('please?input?second?letter:')
????letter?=?raw_input("please?input:")
????if?letter?==?'a':
????????print?('Saturday')
????elif?letter??==?'u':
????????print?('Sunday')
????else:
????????print?('data?error')
elif?letter?==?'F':
????print?('Friday')
elif?letter?==?'M':
????print?('Monday')
elif?letter?==?'T':
????print?('please?input?second?letter')
????letter?=?raw_input("please?input:")
????if?letter??==?'u':
????????print?('Tuesday')
????elif?letter??==?'h':
????????print?('Thursday')
????else:
????????print?('data?error')
elif?letter?==?'W':
????print?('Wednesday')
else:
????print?('data?error')View Code
?輸出結果:
please?input:Splease?input?second?letter:
please?input:a
SaturdayView Code
?實例32:
?題目:按相反的順序輸出列表的值。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:按相反的順序輸出列表的值。
'''
a?=?['one',?'two',?'three']
for?i?in?a[::-1]:
????print?iView Code
?輸出結果:
threetwo
oneView Code
?實例33:
題目:按逗號分隔列表。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:按逗號分隔列表。
'''
L?=?[1,2,3,4,5]
s1?=?','.join(str(n)?for?n?in?L)
print?s1View Code
?輸出結果:
1,2,3,4,5View Code?實例34:
題目:練習函數調用。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:練習函數調用。
'''
def?hello_world():
????print?'hello?world'
def?three_hellos():
????for?i?in?range(3):
????????hello_world()
if?__name__?==?'__main__':
????three_hellos()View Code
?輸出結果:
hello?worldhello?world
hello?worldView Code
?實例35:
題目:文本顏色設置。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:文本顏色設置。
'''
class?bcolors:
????HEADER?=?'\033[95m'
????OKBLUE?=?'\033[94m'
????OKGREEN?=?'\033[92m'
????WARNING?=?'\033[93m'
????FAIL?=?'\033[91m'
????ENDC?=?'\033[0m'
????BOLD?=?'\033[1m'
????UNDERLINE?=?'\033[4m'
print?bcolors.WARNING?+?"警告的顏色字體?"?+?bcolors.ENDCView Code
?輸出結果:
警告的顏色字體?View Code?實例36:
?題目:求100之內的素數。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:求100之內的素數。
'''
from?math?import?sqrt
if?__name__?==?'__main__':
????N?=?100
????a?=?range(0,N)
????for?i?in?range(2,int(sqrt(N))):
????????for?j?in?range(i?+?1,N):
????????????if?(a[i]?!=?0)?and?(a[j]?!=?0):
????????????????if?a[j]?%?a[i]?==?0:
????????????????????a[j]?=?0
????for?i?in?range(2,N):
????????if?a[i]?!=?0:
????????????print?"%5d"?%?a[i]
????????????if?(i?-?2)?%?10?==?0:
????????????????printView Code
?輸出結果:
2????3
????5
????7
???11
???13
???17
???19
???23
???29
???31
???37
???41
???43
???47
???53
???59
???61
???67
???71
???73
???79
???83
???89
???97View Code
?實例37:
題目:對100個數進行排序。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:對10個數進行排序。
思路:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,下次類推,即用第二個元素與后8個進行比較,并進行交換。
'''
if?__name__?==?"__main__":
????N?=?10
????#?input?data
????print?'please?input?ten?num:'
????l?=?[]
????for?i?in?range(N):
????????l.append(int(raw_input('input?a?number:')))
????for?i?in?range(N):
????????print?l[i]
????#?sort?ten?num
????for?i?in?range(N?-?1):
????????min?=?i
????????for?j?in?range(i?+?1,N):
????????????if?l[min]?>?l[j]:min?=?j
????????l[i],l[min]?=?l[min],l[i]
????print?'after?sorted'
????for?i?in?range(N):
????????print?l[i]View Code
輸出結果:
please?input?ten?num:input?a?number:5
input?a?number:8
input?a?number:46
input?a?number:256
input?a?number:1
input?a?number:8
input?a?number:9
input?a?number:4
input?a?number:569
input?a?number:79
5
8
46
256
1
8
9
4
569
79
after?sorted
1
4
5
8
8
9
46
79
256
569View Code
?實例38:
?題目:求一個3*3的矩陣對角線元素之和。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:求一個3*3矩陣對角線元素之和。
思路:利用雙重for循環控制輸入二維數組,再將a[i][i]累加后輸出。
'''
if?__name__?==?'__main__':
????a?=?[]
????sum?=?0.0
????for?i?in?range(3):
????????a.append([])
????????for?j?in?range(3):
????????????a[i].append(float(raw_input("input?num:\n")))
????for?i?in?range(3):
????????sum?+=?a[i][i]
????print?sumView Code
?輸出結果:
input?num:79
input?num:
46
input?num:
86
input?num:
21
input?num:
56
input?num:
32
input?num:
89
input?num:
45
input?num:
89
224.0View Code
?實例39:
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
思路:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后此元素之后的數,依次后移一個位置。
'''
if?__name__?==?'__main__':
????#?方法一
????a?=?[1,4,6,9,13,16,19,28,40,100,0]
????print?'original?list?is:'
????for?i?in?range(len(a)):
????????print?a[i]
????number?=?int(raw_input("insert?a?new?number:\n"))
????end?=?a[9]
????if?number?>?end:
????????a[10]?=?number
????else:
????????for?i?in?range(10):
????????????if?a[i]?>?number:
????????????????temp1?=?a[i]
????????????????a[i]?=?number
????????????????for?j?in?range(i?+?1,11):
????????????????????temp2?=?a[j]
????????????????????a[j]?=?temp1
????????????????????temp1?=?temp2
????????????????break
????for?i?in?range(11):
????????print?a[i]View Code
輸出結果:
14
6
9
13
16
19
28
40
100
0View Code
?實例40:
題目:將一個數組逆序輸出。?
if?__name__?==?'__main__':????a?=?[9,6,5,4,1]
????N?=?len(a)
????print?a
????for?i?in?range(len(a)?/?2):
????????a[i],a[N?-?i?-?1]?=?a[N?-?i?-?1],a[i]
????print?aView Code
?輸出結果:
[9,?6,?5,?4,?1][1,?4,?5,?6,?9]View Code
?實例41:
?題目:模仿靜態變量的用法。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:模仿靜態變量的用法。
'''
def?varfunc():
????var?=?0
????print?'var?=?%d'?%?var
????var?+=?1
if?__name__?==?'__main__':
????for?i?in?range(3):
????????varfunc()
#?類的屬性
#?作為類的一個屬性吧
class?Static:
????StaticVar?=?5
????def?varfunc(self):
????????self.StaticVar?+=?1
????????print?self.StaticVar
print?Static.StaticVar
a?=?Static()
for?i?in?range(3):
????a.varfunc()View Code
?輸出結果:
var?=?0var?=?0
var?=?0
5
6
7
8View Code
?實例42:
題目:學習使用auto定義變量的用法。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:學習使用auto定義變量的用法。
思路:沒有auto關鍵字,使用變量作用域來舉例吧。
'''
num?=?2
def?autofunc():
????num?=?1
????print?'internal?block?num?=?%d'?%?num
????num?+=?1
for?i?in?range(3):
????print?'The?num?=?%d'?%?num
????num?+=?1
????autofunc()View Code
?輸出結果:
The?num?=?2internal?block?num?=?1
The?num?=?3
internal?block?num?=?1
The?num?=?4
internal?block?num?=?1View Code
?實例43:
題目:模仿靜態變量(static)另一案例。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:模仿靜態變量(static)另一案例。
思路:演示一個python作用域使用方法
'''
class?Num:
????nNum?=?1
????def?inc(self):
????????self.nNum?+=?1
????????print?'nNum?=?%d'?%?self.nNum
if?__name__?==?'__main__':
????nNum?=?2
????inst?=?Num()
????for?i?in?range(3):
????????nNum?+=?1
????????print?'The?num?=?%d'?%?nNum
????????inst.inc()View Code
?輸出結果:
The?num?=?3nNum?=?2
The?num?=?4
nNum?=?3
The?num?=?5
nNum?=?4View Code
?實例44:
題目:統計1到100之和。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:統計?1?到?100?之和。
'''
tmp?=?0
for?i?in?range(1,101):
????tmp?+=?i
print?'The?sum?is?%d'?%?tmpView Code
?輸出結果:
The?sum?is?5050View Code?實例45:
題目:求輸入數字的平方,如果平方運算后小于50則退出。?
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:求輸入數字的平方,如果平方運算后小于?50?則退出。
'''
TRUE?=?1
FALSE?=?0
def?SQ(x):
????return?x?*?x
print?'如果輸入的數字小于?50,程序將停止運行。'
again?=?1
while?again:
????num?=?int(raw_input('Please?input?number'))
????print?'運算結果為?%d'?%?(SQ(num))
????if?num?>=?50:
????????again?=?TRUE
????else:
????????again?=?FALSEView Code
?輸出結果:
如果輸入的數字小于?50,程序將停止運行。Please?input?number300
運算結果為?90000
Please?input?number45
運算結果為?2025View Code
?實例46:
?題目:連個變量值互換。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:連個變量值互換。
'''
def?exchange(a,b):
????a,b?=?b,a
????return?(a,b)
if?__name__?==?'__main__':
????x?=?10
????y?=?20
????print?'x?=?%d,y?=?%d'?%?(x,y)
????x,y?=?exchange(x,y)
????print?'x?=?%d,y?=?%d'?%?(x,y)View Code
?輸出結果:
x?=?10,y?=?20x?=?20,y?=?10View Code
?實例47:
?題目:數字比較。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:數字比較。
'''
if?__name__?==?'__main__':
????i?=?10
????j?=?20
????if?i?>?j:
????????print?'%d?大于?%d'?%?(i,j)
????elif?i?==?j:
????????print?'%d?等于?%d'?%?(i,j)
????elif?i?<?j:
????????print?'%d?小于?%d'?%?(i,j)
????else:
????????print?'未知'View Code
?輸出結果:
10?小于?20View Code?實例48:
?題目:使用lambda來創建匿名函數。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:使用lambda來創建匿名函數。
'''
MAXIMUM?=?lambda?x,y?:??(x?>?y)?*?x?+?(x?<?y)?*?y
MINIMUM?=?lambda?x,y?:??(x?>?y)?*?y?+?(x?<?y)?*?x
if?__name__?==?'__main__':
????a?=?10
????b?=?20
????print?'The?largar?one?is?%d'?%?MAXIMUM(a,b)
????print?'The?lower?one?is?%d'?%?MINIMUM(a,b)View Code
?輸出結果:
The?largar?one?is?20The?lower?one?is?10View Code
?實例49:
題目:輸出一個隨機數。
#!/usr/bin/env??python#?--*--coding:utf-8?--*--
'''
需求:輸出一個隨機數。
思路:使用?random?模塊。
'''
import?random
#生成?10?到?20?之間的隨機數
print?random.uniform(10,?20)View Code
?輸出結果:
14.6599912675View Code轉載于:https://www.cnblogs.com/wulaoer/p/5119944.html
總結
以上是生活随笔為你收集整理的Python 100例(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot和quartz整合实
- 下一篇: python(3)-动态参数实现字符串格