100道Python練習題,看看你能會幾題???
本文較長,如果你不是一個能夠耐住性子,一下子就看完的性格,強烈建議收藏一波喲~??
如果文章對你有幫助,記得點贊和在看喲~
實例001:數(shù)字組合
實例002:“個稅計算”
實例003:完全平方數(shù)
實例004:這天第幾天
實例005:三數(shù)排序
實例006:斐波那契數(shù)列
實例007:copy
實例008:九九乘法表
實例009:暫停一秒輸出?
實例010:給人看的時間
實例011:養(yǎng)兔子
實例012:100到200的素數(shù)
實例013:所有水仙花數(shù)
實例014:分解質(zhì)因數(shù)
實例015:分數(shù)歸檔
實例016:輸出日期
實例017:字符串構(gòu)成
實例018:復(fù)讀機相加
實例019:完數(shù)
實例020:高空拋物
實例021:猴子偷桃
實例022:比賽對手
實例023:畫菱形
實例024:斐波那契數(shù)列II
實例025:階乘求和
實例026:遞歸求階乘
實例027:遞歸輸出
實例028:遞歸求等差數(shù)列
實例029:反向輸出
實例030:回文數(shù)
實例031:字母識詞
實例032:反向輸出II
實例033:列表轉(zhuǎn)字符串
實例034:調(diào)用函數(shù)
實例035:設(shè)置輸出顏色
實例036:算素數(shù)
實例037:排序
實例038:矩陣對角線之和
實例039:有序列表插入元素
實例040:逆序列表
實例041:類的方法與變量
實例042:變量作用域
實例043:作用域、類的方法與變量
實例044:矩陣相加
實例045:求和
實例046:打破循環(huán)
實例047:函數(shù)交換變量
實例048:數(shù)字比大小
實例049:lambda
實例050:隨機數(shù)
實例051:按位與
實例052:按位或
實例053:按位異或?
實例054:位取反、位移動
實例055:按位取反
實例056:畫圈
實例057:畫線
實例058:畫矩形
實例059:畫圖
實例060:字符串長度
實例061:楊輝三角
實例062:查找字符串
實例063:畫橢圓
實例064:畫橢圓、矩形
實例065:畫組合圖形
實例066:三數(shù)排序
實例067:交換位置
實例068:旋轉(zhuǎn)數(shù)列
實例069:報數(shù)
實例070:字符串長度II
實例071:輸入和輸出
實例072:創(chuàng)建鏈表
實例073:反向輸出鏈表
實例074:列表排序、連接
實例075:不知所云
實例076:做函數(shù)
實例077:遍歷列表
實例078:字典
實例079:字符串排序
實例080:猴子分桃
實例081:求未知數(shù)
實例082:八進制轉(zhuǎn)十進制
實例083:制作奇數(shù)
實例084:連接字符串
實例085:整除
實例086:連接字符串II
實例087:訪問類成員
實例088:打印星號
實例089:解碼
實例090:列表詳解
實例091:time模塊
實例092:time模塊II
實例093:time模塊III
實例094:time模塊IV
實例095:轉(zhuǎn)換時間格式
實例096:計算復(fù)讀次數(shù)
實例097:磁盤寫入
實例098:磁盤寫入II
實例099:磁盤讀寫
實例100:列表轉(zhuǎn)字典
實例001:數(shù)字組合
題目:?有四個數(shù)字:1、2、3、4,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?各是多少?
程序分析:?遍歷全部可能,把有重復(fù)的剃掉。
total=0
for?i?in?range(1,5):
??for?j?in?range(1,5):
????for?k?in?range(1,5):
??????if?((i!=j)and(j!=k)and(k!=i)):
????????print(i,j,k)
????????total+=1print(total)
簡便方法?用itertools中的permutations即可。
import?itertools
sum2=0a=[1,2,3,4]
for?i?in?itertools.permutations(a,3):
??print(i)
??sum2+=1
??print(sum2)
實例002:“個稅計算”
題目:?企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(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,求應(yīng)發(fā)放獎金總數(shù)?
程序分析:?分區(qū)間計算即可。
profit=int(input('Show?me?the?money:?'))
bonus=0
thresholds=[100000,100000,200000,200000,400000]
rates=[0.1,0.075,0.05,0.03,0.015,0.01]
for?i?in?range(len(thresholds)):????
??if?profit<=thresholds[i]:????????
????bonus+=profit*rates[i]????????
????profit=0????????
????break????
??else:????????
????bonus+=thresholds[i]*rates[i]????????
????profit-=thresholds[i]
????bonus+=profit*rates[-1]
????print(bonus)
實例003:完全平方數(shù)
題目:?一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?
程序分析:?因為168對于指數(shù)爆炸來說實在太小了,所以可以直接省略數(shù)學分析,用最樸素的方法來獲取上限:
n=0
while?(n+1)**2-n*n<=168:????
??n+=1
print(n+1)
思路是:?最壞的結(jié)果是n的平方與(n+1)的平方剛好差168,由于是平方的關(guān)系,不可能存在比這更大的間隙。
至于判斷是否是完全平方數(shù),最簡單的方法是:平方根的值小數(shù)為0即可。
結(jié)合起來:
n=0
while?(n+1)**2-n*n<=168:????
??n+=1
for?i?in?range((n+1)**2):
???if?i**0.5==int(i**0.5)?and?(i+168)**0.5==int((i+168)**0.5):
??????print(i-100)
實例004:這天第幾天
題目:?輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:?特殊情況,閏年時需考慮二月多加一天:
def?isLeapYear(y):
??return?(y%400==0?or?(y%4==0?and?y%100!=0))
DofM?=?[0,31,28,31,30,31,30,31,31,30,31,30]
res=0
year=int(input('Year:'))
month=int(input('Month:'))
day=int(input('day:'))
if?isLeapYear(year):????
??DofM[2]+=1
for?i?in?range(month):????
??res+=DofM[i]
print(res+day)
實例005:三數(shù)排序
題目:?輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。
程序分析:?練練手就隨便找個排序算法實現(xiàn)一下,偷懶就直接調(diào)函數(shù)。
raw=[]
for?i?in?range(3):????
??x=int(input('int%d:?'%(i)))????
??raw.append(x)
for?i?in?range(len(raw)):????
??for?j?in?range(i,len(raw)):????????
????if?raw[i]>raw[j]:
??????raw[i],raw[j]=raw[j],raw[i]
print(raw)
raw2=[]
for?i?in?range(3):????
??x=int(input('int%d:?'%(i)))????
??raw2.append(x)
print(sorted(raw2))
實例006:斐波那契數(shù)列
題目:?斐波那契數(shù)列。
程序分析:?斐波那契數(shù)列(Fibonacci sequence),從1,1開始,后面每一項等于前面兩項之和。圖方便就遞歸實現(xiàn),圖性能就用循環(huán)。
遞歸實現(xiàn)
def?Fib(n):
??return?1?if?n<=2?else?Fib(n-1)+Fib(n-2)
print(Fib(int(input())))
樸素實現(xiàn)
target=int(input())
res=0
a,b=1,1
for?i?in?range(target-1):????
??a,b=b,a+b
print(a)
實例007:copy
題目:?將一個列表的數(shù)據(jù)復(fù)制到另一個列表中。
程序分析:?使用列表[:],拿不準可以調(diào)用copy模塊。
import?copy
a?=?[1,2,3,4,['a','b']]
b?=?a??????????#?賦值
c?=?a[:]????????#?淺拷貝
d?=?copy.copy(a)????#?淺拷貝
e?=?copy.deepcopy(a)??#?深拷貝
a.append(5)
a[4].append('c')
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)
a=?[1,?2,?3,?4,?['a',?'b',?'c'],?5]
b=?[1,?2,?3,?4,?['a',?'b',?'c'],?5]
c=?[1,?2,?3,?4,?['a',?'b',?'c']]
d=?[1,?2,?3,?4,?['a',?'b',?'c']]
e=?[1,?2,?3,?4,?['a',?'b']]
實例008:九九乘法表
題目:?輸出 9*9 乘法口訣表。
程序分析:?分行與列考慮,共9行9列,i控制行,j控制列。
for?i?in?range(1,10):
????for?j?in?range(1,i+1):
????????print('%d*%d=%2ld?'%(i,j,i*j),end='')
????print()
實例009:暫停一秒輸出
題目:?暫停一秒輸出。
程序分析:?使用 time 模塊的 sleep() 函數(shù)。
import?time
for?i?in?range(4):
print(str(int(time.time()))[-2:])
????time.sleep(1)
實例010:給人看的時間
題目:?暫停一秒輸出,并格式化當前時間。
程序分析:?使用 time 模塊的 sleep() 函數(shù)。
import?time
for?i?in?range(4):????
??print(time.strftime('%Y-%m-%d?%H:%M:%S',time.localtime(time.time())))
??time.sleep(1)
實例011:養(yǎng)兔子
題目:?有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?
程序分析:?我認為原文的解法有點扯,沒有考慮3個月成熟的問題,人家還是嬰兒怎么生孩子?考慮到三個月成熟,可以構(gòu)建四個數(shù)據(jù),其中:一月兔每個月長大成為二月兔,二月兔變?nèi)峦茫峦米兂赡晖?,成年兔(包括新成熟的三月兔)生等量的一月兔?/p>
month=int(input('繁殖幾個月?:'))
month_1=1
month_2=0
month_3=0
month_elder=0
for?i?in?range(month):
????month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
????print('第%d個月共'%(i+1),month_1+month_2+month_3+month_elder,'對兔子')
????print('其中1月兔:',month_1)
????print('其中2月兔:',month_2)
????print('其中3月兔:',month_3)
????print('其中成年兔:',month_elder)
實例012:100到200的素數(shù)
題目:?判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。
程序分析:?判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素數(shù),反之是素數(shù)。用else可以進一步簡化代碼.
import?math
for?i?in?range(100,200):
????flag=0
????for?j?in?range(2,round(math.sqrt(i))+1):
????????if?i%j==0:
????????????flag=1
????????????break
????if?flag:
????????continue
????print(i)
print('\nSimplify?the?code?with?"else"\n')
for?i?in?range(100,200):
????for?j?in?range(2,round(math.sqrt(i))+1):
????????if?i%j==0:
????????????break
????else:
????????print(i)
實例013:所有水仙花數(shù)
題目:?打印出所有的"水仙花數(shù)",所謂"水仙花數(shù)"是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個"水仙花數(shù)",因為153=1的三次方+5的三次方+3的三次方。
程序分析:?利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,十位,百位。
for?i?in?range(100,1000):
????s=str(i)
????one=int(s[-1])
????ten=int(s[-2])
????hun=int(s[-3])
????if?i?==?one**3+ten**3+hun**3:
????????print(i)
實例014:分解質(zhì)因數(shù)
題目:?將一個整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=233*5。
程序分析:?根本不需要判斷是否是質(zhì)數(shù),從2開始向數(shù)本身遍歷,能整除的肯定是最小的質(zhì)數(shù)。
target=int(input('輸入一個整數(shù):'))
print(target,'=?',end='')
if?target<0:
????target=abs(target)
print('-1*',end='')
flag=0
if?target<=1:
print(target)
????flag=1
while?True:
if?flag:
break
for?i?in?range(2,int(target+1)):
if?target%i==0:
print("%d"%i,end='')
if?target==i:
????????????????flag=1
break
print('*',end='')
????????????target/=i
break
實例015:分數(shù)歸檔
題目:?利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
程序分析:?用條件判斷即可。
points=int(input('輸入分數(shù):'))
if?points>=90:
????grade='A'
elif?points<60:
????grade='C'
else:
???grade='B
print(grade)
實例016:輸出日期
題目:?輸出指定格式的日期。
程序分析:?使用 datetime 模塊。
import?datetime
print(datetime.date.today())
print(datetime.date(2333,2,3))
print(datetime.date.today().strftime('%d/%m/%Y'))
day=datetime.date(1111,2,3)
day=day.replace(year=day.year+22)
print(day)
實例017:字符串構(gòu)成
題目:?輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。
程序分析:?利用 while 或 for 語句,條件為輸入的字符不為 ‘\n’。
string=input("輸入字符串:")
alp=0
num=0
spa=0
oth=0
for?i?in?range(len(string)):
if?string[i].isspace():
????????spa+=1
????elif?string[i].isdigit():
????????num+=1
????elif?string[i].isalpha():
????????alp+=1
else:
????????oth+=1
print('space:?',spa)
print('digit:?',num)
print('alpha:?',alp)
print('other:?',oth)
實例018:復(fù)讀機相加
題目:?求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加由鍵盤控制。
程序分析:?用字符串解決。
a=input('被加數(shù)字:')
n=int(input('加幾次?:'))
res=0
for?i?in?range(n):
????res+=int(a)
????a+=a[0]
print('結(jié)果是:',res)
實例019:完數(shù)
題目:?一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為"完數(shù)"。例如6=1+2+3.編程找出1000以內(nèi)的所有完數(shù)。
程序分析:?將每一對因子加進集合,在這個過程中已經(jīng)自動去重。最后的結(jié)果要求不計算其本身。
def?factor(num):
????target=int(num)
????res=set()
for?i?in?range(1,num):
if?num%i==0:
????????????res.add(i)
????????????res.add(num/i)
return?res
for?i?in?range(2,1001):
if?i==sum(factor(i))-i:
????????print(i)
實例020:高空拋物
題目:?一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經(jīng)過多少米?第10次反彈多高?
high=200.
total=100
for?i?in?range(10):
????high/=2
????total+=high
????print(high/2)
print('總長:',total)
實例021:猴子偷桃
題目:?猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
程序分析:?按規(guī)則反向推斷:猴子有一個桃子,他偷來一個桃子,覺得不夠又偷來了與手上等量的桃子,一共偷了9天。
peach=1
for?i?in?range(9):
????peach=(peach+1)*2
print(peach)
實例022:比賽對手
題目:?兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
程序分析:?找到條件下不重復(fù)的三個對手即可。
a=set(['x','y','z'])
b=set(['x','y','z'])
c=set(['x','y','z'])
c-=set(('x','y'))
a-=set('x')
for?i?in?a:
????for?j?in?b:
????????for?k?in?c:
????????????if?len(set((i,j,k)))==3:
????????????????print('a:%s,b:%s,c:%s'%(i,j,k))
實例023:畫菱形
題目:?打印出如下圖案(菱形):
*
***
*****
*******
*****
***
*
程序分析:?遞歸調(diào)用即可。
def?draw(num):
????a="*"*(2*(4-num)+1)
????print(a.center(9,'?'))
if?num!=1:
????????draw(num-1)
????????print(a.center(9,'?'))
draw(4)
實例024:斐波那契數(shù)列II
題目:?有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和。
程序分析:?就是斐波那契數(shù)列的后一項除以前一項。
a?=?2.0
b?=?1.0
s?=?0
for?n?in?range(1,21):
????s?+=?a?/?b
????a,b?=?a?+?b,a
print?(s)
實例025:階乘求和
題目:?求1+2!+3!+…+20!的和。
程序分析:?1+2!+3!+…+20!=1+2(1+3(1+4(…20(1))))
res=1
for?i?in?range(20,1,-1):
????res=i*res+1
print(res)
實例026:遞歸求階乘
題目:?利用遞歸方法求5!。
程序分析:?遞歸調(diào)用即可。
def?factorial(n):
????return?n*factorial(n-1)?if?n>1?else?1
print(factorial(5))
實例027:遞歸輸出
題目:?利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印出來。
程序分析:?遞歸真是蠢方法。
def?rec(string):
if?len(string)!=1:
????rec(string[1:])
print(string[0],end='')
rec(input('string?here:'))
實例028:遞歸求等差數(shù)列
題目:?有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
程序分析:?就一等差數(shù)列。
def?age(n):
???if?n==1:
???return?10
??return?2+age(n-1)
print(age(5))
實例029:反向輸出
題目:?給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。
程序分析:?學會分解出每一位數(shù),用字符串的方法總是比較省事。
n=int(input('輸入一個正整數(shù):'))
n=str(n)
print('%d位數(shù)'%len(n))
print(n[::-1])
實例030:回文數(shù)
題目:?一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。
程序分析:?用字符串比較方便,就算輸入的不是數(shù)字都ok。
n=input("隨便你輸入啥啦:")
a=0
b=len(n)-1
flag=True
while?aif?n[a]!=n[b]:
print('不是回文串')
????????flag=False
break
????a,b=a+1,b-1
if?flag:
print('是回文串')
實例031:字母識詞
題目:?請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷第二個字母。
程序分析:?這里用字典的形式直接將對照關(guān)系存好。
weekT={'h':'thursday','u':'tuesday'}
weekS={'a':'saturday','u':'sunday'}
week={'t':weekT,
???'s':weekS,
???'m':'monday',
???'w':'wensday',
???'f':'friday'}
a=week[str(input('請輸入第一位字母:')).lower()]
if?a==weekT?or?a==weekS:
??print(a[str(input('請輸入第二位字母:')).lower()])
else:
????print(a)
實例032:反向輸出II
題目:?按相反的順序輸出列表的值。
a?=?['one',?'two',?'three']
print(a[::-1])
實例033:列表轉(zhuǎn)字符串
題目:?按逗號分隔列表。
L?=?[1,2,3,4,5]
print(','.join(str(n)?for?n?in?L))
實例034:調(diào)用函數(shù)
題目:?練習函數(shù)調(diào)用。
def?hello():
????print('Hello?World!')
def?helloAgain():
for?i?in?range(2):
????????hello()
if?__name__=='__main__':
????helloAgain()
實例035:設(shè)置輸出顏色
題目:?文本顏色設(shè)置。
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.ENDC)
實例036:算素數(shù)
題目:?求100之內(nèi)的素數(shù)。
程序分析:?用else執(zhí)行for循環(huán)的獎勵代碼(如果for是正常完結(jié),非break)。
lo=int(input('下限:'))
hi=int(input('上限:'))
for?i?in?range(lo,hi+1):
????if?i?>?1:
????????for?j?in?range(2,i):
????????????if?(i?%?j)?==?0:
????????????????break
????????else:
????????????print(i)
實例037:排序
題目:?對10個數(shù)進行排序。
程序分析:?同實例005。
raw=[]
for?i?in?range(10):
????x=int(input('int%d:?'%(i)))
????raw.append(x)
for?i?in?range(len(raw)):
for?j?in?range(i,len(raw)):
if?raw[i]>raw[j]:
????????????raw[i],raw[j]=raw[j],raw[i]
print(raw)
實例038:矩陣對角線之和
題目:?求一個3*3矩陣主對角線元素之和。
mat=[[1,2,3],
?????[3,4,5],
?????[4,5,6]
????]
res=0
for?i?in?range(len(mat)):
????res+=mat[i][i]
print(res)
實例039:有序列表插入元素
題目:?有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。
程序分析:?首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間的數(shù)的情況,插入后此元素之后的數(shù),依次后移一個位置。
lis=[1,10,100,1000,10000,100000]
n=int(input('insert?a?number:?'))
lis.append(n)
for?i?in?range(len(lis)-1):
????if?lis[i]>=n:
????????for?j?in?range(i,len(lis)):
????????????lis[j],lis[-1]=lis[-1],lis[j]
????????break
print(lis)
實例040:逆序列表
題目:?將一個數(shù)組逆序輸出。
程序分析:?依次交換位置,或者直接調(diào)用reverse方法。
lis=[1,10,100,1000,10000,100000]
for?i?in?range(int(len(lis)/2)):
????lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i]
print('第一種實現(xiàn):')
print(lis)
lis=[1,10,100,1000,10000,100000]
print('第二種實現(xiàn):')
lis.reverse()
print(lis)
實例041:類的方法與變量
題目:?模仿靜態(tài)變量的用法。
程序分析:?構(gòu)造類,了解類的方法與變量。
def?dummy():
????i=0
????print(i)
????i+=1
class?cls:
????i=0
????def?dummy(self):
????????print(self.i)
????????self.i+=1
a=cls()
for?i?in?range(50):
????dummy()
????a.dummy()
實例042:變量作用域
題目:?學習使用auto定義變量的用法。
程序分析:?python中的變量作用域。
i=0
n=0
def?dummy():
????i=0
????print(i)
????i+=1
def?dummy2():
global?n
????print(n)
????n+=1
print('函數(shù)內(nèi)部的同名變量')
for?j?in?range(20):
????print(i)
????dummy()
????i+=1
print('global聲明同名變量')
for?k?in?range(20):
????print(n)
????dummy2()
????n+=10
實例043:作用域、類的方法與變量
題目:?模仿靜態(tài)變量(static)另一案例。
程序分析:?綜合實例041和實例042。
class?dummy:
????num=1
????def?Num(self):
????????print('class?dummy?num:',self.num)
????????print('global?num:?',num)
????????self.num+=1
n=dummy()
num=1
for?i?in?range(5):
????num*=10
????n.Num()
實例044:矩陣相加
題目:?計算兩個矩陣相加。
程序分析:?創(chuàng)建一個新的矩陣,使用 for 迭代并取出 X 和 Y 矩陣中對應(yīng)位置的值,相加后放到新矩陣的對應(yīng)位置中。
X?=?[[12,7,3],
????[4?,5,6],
????[7?,8,9]]
Y?=?[[5,8,1],
????[6,7,3],
????[4,5,9]]
res=[[0,0,0],
????[0,0,0],
????[0,0,0]]
for?i?in?range(len(res)):
????for?j?in?range(len(res[0])):
????????res[i][j]=X[i][j]+Y[i][j]
print(res)
實例045:求和
題目:?統(tǒng)計 1 到 100 之和。
res=0
for?i?in?range(1,101):
????res+=i
print(res)
實例046:打破循環(huán)
題目:?求輸入數(shù)字的平方,如果平方運算后小于 50 則退出。
while?True:
????try:
????????n=float(input('輸入一個數(shù)字:'))
????except:
????????print('輸入錯誤')
????????continue
????dn=n**2
????print('其平方為:',dn)
????if?dn<50:
????????print('平方小于50,退出')
????????break
實例047:函數(shù)交換變量
題目:?兩個變量值用函數(shù)互換。
def?exc(a,b):
????return?(b,a)
a=0
b=10
a,b=exc(a,b)
print(a,b)
實例048:數(shù)字比大小
題目:?數(shù)字比較。
a=int(input('a='))
b=int(input('b='))
if?a????print('a)
elif?a>b:
????print('a>b')
else:
????print('a=b')
實例049:lambda
題目:?使用lambda來創(chuàng)建匿名函數(shù)。
Max=lambda?x,y:x*(x>=y)+y*(y>x)
Min=lambda?x,y:x*(x<=y)+y*(y
a=int(input('1:'))
b=int(input('2:'))
print(Max(a,b))
print(Min(a,b))
實例050:隨機數(shù)
題目:?輸出一個隨機數(shù)。
程序分析:?使用 random 模塊。
import?random
print(random.uniform(10,20))
實例051:按位與
題目:?學習使用按位與 & 。
程序分析:?0&0=0; 0&1=0; 1&0=0; 1&1=1。
a=0o77
print(a)
b=a&3
print(b)
b=b&7
print(b)
實例052:按位或
題目:?學習使用按位或 | 。
程序分析:?0|0=0; 0|1=1; 1|0=1; 1|1=1
a=0o77
print(a|3)
print(a|3|7)
實例053:按位異或
題目:?學習使用按位異或 ^ 。
程序分析:?0^0=0; 0^1=1; 1^0=1; 1^1=0
a=0o77
print(a^3)
print(a^3^7)
實例054:位取反、位移動
題目:?取一個整數(shù)a從右端開始的4~7位。
程序分析:?可以這樣考慮:
先使a右移4位。 設(shè)置一個低4位全為1,其余全為0的數(shù)??捎?0<<4) 將上面二者進行&運算。
a=int(input('輸入一個數(shù)字:?'))
b=0?????????????????#?????0
b=~b????????????????#?????1
b=b<<4??????????????#?10000
b=~b????????????????#??1111
c=a>>4
d=c&b
print('a:',bin(a))
print('b:',bin(b))
print('c:',bin(c))
print('d:',bin(d))
實例055:按位取反
題目:?學習使用按位取反~。
程序分析:?~0=1; ~1=0;
print(~234)
print(~~234)
實例056:畫圈
題目:?畫圖,學用circle畫圓形。
from?tkinter?import?*
canvas=Canvas(width=800,height=600,bg='yellow')
canvas.pack(expand=YES,fill=BOTH)
k=1
j=1
for?i?in?range(26):
????canvas.create_oval(310-k,250-k,310+k,250+k,width=1)
????k+=j
????j+=0.3
mainloop()
實例057:畫線
題目:?畫圖,學用line畫直線。
from?tkinter?import?*
canvas?=?Canvas(width=300,?height=300,?bg='green')???
canvas.pack(expand=YES,?fill=BOTH)??????????????????
x0?=?263
y0?=?263
y1?=?275
x1?=?275
for?i?in?range(19):
????canvas.create_line(x0,y0,x0,y1,?width=1,?fill='red')
????x0?=?x0?-?5
????y0?=?y0?-?5
????x1?=?x1?+?5
????y1?=?y1?+?5
x0?=?263
y1?=?275
y0?=?263
for?i?in?range(21):
????canvas.create_line(x0,y0,x0,y1,fill?=?'red')
????x0?+=?5
????y0?+=?5
????y1?+=?5
實例058:畫矩形
題目:?畫圖,學用rectangle畫方形。
from?tkinter?import?*
root?=?Tk()
root.title('Canvas')
canvas?=?Canvas(root,width?=?400,height?=?400,bg?=?'yellow')
x0?=?263
y0?=?263
y1?=?275
x1?=?275
for?i?in?range(19):
????canvas.create_rectangle(x0,y0,x1,y1)
????x0?-=?5
????y0?-=?5
????x1?+=?5
????y1?+=?5
canvas.pack()
root.mainloop()
實例059:畫圖
題目:?畫圖,綜合例子。
from?tkinter?import?*
canvas?=?Canvas(width?=?300,height?=?300,bg?=?'green')
canvas.pack(expand?=?YES,fill?=?BOTH)
x0?=?150
y0?=?100
canvas.create_oval(x0?-?10,y0?-?10,x0?+?10,y0?+?10)
canvas.create_oval(x0?-?20,y0?-?20,x0?+?20,y0?+?20)
canvas.create_oval(x0?-?50,y0?-?50,x0?+?50,y0?+?50)
import?math
B?=?0.809
for?i?in?range(16):
????a?=?2?*?math.pi?/?16?*?i
????x?=?math.ceil(x0?+?48?*?math.cos(a))
????y?=?math.ceil(y0?+?48?*?math.sin(a)?*?B)
????canvas.create_line(x0,y0,x,y,fill?=?'red')
canvas.create_oval(x0?-?60,y0?-?60,x0?+?60,y0?+?60)
for?k?in?range(501):
????for?i?in?range(17):
????????a?=?(2?*?math.pi?/?16)?*?i?+?(2?*?math.pi?/?180)?*?k
????????x?=?math.ceil(x0?+?48?*?math.cos(a))
????????y?=?math.ceil(y0?+?48?+?math.sin(a)?*?B)
????????canvas.create_line(x0,y0,x,y,fill?=?'red')
????for?j?in?range(51):
????????a?=?(2?*?math.pi?/?16)?*?i?+?(2*?math.pi?/?180)?*?k?-?1
????????x?=?math.ceil(x0?+?48?*?math.cos(a))
????????y?=?math.ceil(y0?+?48?*?math.sin(a)?*?B)
????????canvas.create_line(x0,y0,x,y,fill?=?'red')
mainloop()
實例060:字符串長度
題目:?計算字符串長度。
s='zhangguang101'
print(len(s))
實例061:楊輝三角
題目:?打印出楊輝三角形前十行。
def?generate(numRows):
????r?=?[[1]]
????for?i?in?range(1,numRows):
????????r.append(list(map(lambda?x,y:x+y,?[0]+r[-1],r[-1]+[0])))
????return?r[:numRows]
a=generate(10)
for?i?in?a:
????print(i)
實例062:查找字符串
題目:?查找字符串。
s1='aabbxuebixuebi'
s2='ab'
s3='xue'
print(s1.find(s2))
print(s1.find(s3))
實例063:畫橢圓
題目:?畫橢圓。
程序分析:?使用 tkinter。
from?tkinter?import?*
x?=?360
y?=?160
top?=?y?-?30
bottom?=?y?-?30
canvas?=?Canvas(width?=?400,height?=?600,bg?=?'white')
for?i?in?range(20):
????canvas.create_oval(250?-?top,250?-?bottom,250?+?top,250?+?bottom)
????top?-=?5
????bottom?+=?5
canvas.pack()
mainloop()
實例064:畫橢圓、矩形
題目:?利用ellipse 和 rectangle 畫圖。。
from?tkinter?import?*????
canvas?=?Canvas(width?=?400,height?=?600,bg?=?'white')????
left?=?20????
right?=?50????
top?=?50????
num?=?15????
for?i?in?range(num):????????
????canvas.create_oval(250?-?right,250?-?left,250?+?right,250?+?left)????????
????canvas.create_oval(250?-?20,250?-?top,250?+?20,250?+?top)????????
????canvas.create_rectangle(20?-?2?*?i,20?-?2?*?i,10?*?(i?+?2),10?*?(?i?+?2))????????
????right?+=?5????????
????left?+=?5????????
????top?+=?10????
canvas.pack()????
mainloop()
實例065:畫組合圖形
題目:?一個最優(yōu)美的圖案。
import?math
from?tkinter?import?*
class?PTS:
????def?__init__(self):
????????self.x?=?0
????????self.y?=?0
points?=?[]
def?LineToDemo():
????screenx?=?400
????screeny?=?400
????canvas?=?Canvas(width?=?screenx,height?=?screeny,bg?=?'white')
????AspectRatio?=?0.85
????MAXPTS?=?15
????h?=?screeny
????w?=?screenx
????xcenter?=?w?/?2
????ycenter?=?h?/?2
????radius?=?(h?-?30)?/?(AspectRatio?*?2)?-?20
????step?=?360?/?MAXPTS
????angle?=?0.0
????for?i?in?range(MAXPTS):
????????rads?=?angle?*?math.pi?/?180.0
????????p?=?PTS()
????????p.x?=?xcenter?+?int(math.cos(rads)?*?radius)
????????p.y?=?ycenter?-?int(math.sin(rads)?*?radius?*?AspectRatio)
????????angle?+=?step
????????points.append(p)
????canvas.create_oval(xcenter?-?radius,ycenter?-?radius,
???????????????????????xcenter?+?radius,ycenter?+?radius)
????for?i?in?range(MAXPTS):
????????for?j?in?range(i,MAXPTS):
????????????canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
????canvas.pack()
????mainloop()
if?__name__?==?'__main__':
????LineToDemo()
實例066:三數(shù)排序
題目:?輸入3個數(shù)a,b,c,按大小順序輸出。
raw=[]
for?i?in?range(3):
????x=int(input('int%d:?'%(i)))
????raw.append(x)
for?i?in?range(len(raw)):
for?j?in?range(i,len(raw)):
if?raw[i]>raw[j]:
????????????raw[i],raw[j]=raw[j],raw[i]
print(raw)
raw2=[]
for?i?in?range(3):
????x=int(input('int%d:?'%(i)))
????raw2.append(x)
print(sorted(raw2))
實例067:交換位置
題目:?輸入數(shù)組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數(shù)組。
li=[3,2,5,7,8,1,5]
li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1]
m=li[0]
ind=li.index(max(li))
li[0]=li[ind]
li[ind]=m
print(li)
實例068:旋轉(zhuǎn)數(shù)列
題目:?有n個整數(shù),使其前面各數(shù)順序向后移m個位置,最后m個數(shù)變成最前面的m個數(shù)
from?collections?import?*
li=[1,2,3,4,5,6,7,8,9]
deq=deque(li,maxlen=len(li))
print(li)
deq.rotate(int(input('rotate:')))
print(list(deq))
實例069:報數(shù)
題目:?有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
nmax?=?50
n?=?int(input('請輸入總?cè)藬?shù):'))
num?=?[]
for?i?in?range(n):
????num.append(i?+?1)
i?=?0
k?=?0
m?=?0
while?m?1:
????if?num[i]?!=?0?:?k?+=?1
????if?k?==?3:
????????num[i]?=?0
????????k?=?0
????????m?+=?1
????i?+=?1
????if?i?==?n?:?i?=?0
i?=?0
while?num[i]?==?0:?i?+=?1
print(num[i])
實例070:字符串長度II
題目:?寫一個函數(shù),求一個字符串的長度,在main函數(shù)中輸入字符串,并輸出其長度。
def?lenofstr(s):????
???return?len(s)
print(lenofstr('tanxiaofengsheng'))
實例071:輸入和輸出
題目:?編寫input()和output()函數(shù)輸入,輸出5個學生的數(shù)據(jù)記錄。
N?=?3
#stu
#num?:?string
#name?:?string
liststudent?=?[]
for?i?in?range(5):????
???student.append(['','',[]])
def?input_stu(stu):????
???for?i?in?range(N):????????
???????stu[i][0]?=?input('input?student?num:\n')????????
????????stu[i][1]?=?input('input?student?name:\n')????????
????for?j?in?range(3):????????????
???????stu[i][2].append(int(input('score:\n')))
def?output_stu(stu):????
???for?i?in?range(N):????????
???????print?('%-6s%-10s'?%?(?stu[i][0],stu[i][1]?))????????
????for?j?in?range(3):????????????
???????print?('%-8d'?%?stu[i][2][j])
if?__name__?==?'__main__':????
???input_stu(student)????
???print?(student)????
???output_stu(student)
實例072:創(chuàng)建鏈表
題目:?創(chuàng)建一個鏈表。
class?Node:
????def?__init__(self,?data):
????????self.data?=?data
????????self.next?=?None
????def?get_data(self):
????????return?self.data
class?List:
????def?__init__(self,?head):
????????self.head?=?head
????def?is_empty(self):?
????????return?self.get_len()?==?0
????
????def?get_len(self):??
????????length?=?0
????????temp?=?self.head
????????while?temp?is?not?None:
????????????length?+=?1
????????????temp?=?temp.next
????????return?length
????def?append(self,?node):
????????temp?=?self.head
????????while?temp.next?is?not?None:
????????????temp?=?temp.next
????????temp.next?=?node
????def?delete(self,?index):?
????????if?index?1?or?index?>?self.get_len():
????????????print("給定位置不合理")
????????????return
????????if?index?==?1:
????????????self.head?=?self.head.next
????????????return
????????temp?=?self.head
????????cur_pos?=?0
????????while?temp?is?not?None:
????????????cur_pos?+=?1
????????????if?cur_pos?==?index-1:
????????????????temp.next?=?temp.next.next
????????????temp?=?temp.next
????def?insert(self,?pos,?node):
????????if?pos?1?or?pos?>?self.get_len():
????????????print("插入結(jié)點位置不合理")
????????????return
????????temp?=?self.head
????????cur_pos?=?0
????????while?temp?is?not?Node:
????????????cur_pos?+=?1
????????????if?cur_pos?==?pos-1:
????????????????node.next?=?temp.next
????????????????temp.next?=node
????????????????break
????????????temp?=?temp.next
????def?reverse(self,?head):
????????if?head?is?None?and?head.next?is?None:
????????????return?head
????????pre?=?head
????????cur?=?head.next
????????while?cur?is?not?None:
????????????temp?=?cur.next
????????????cur.next?=?pre
????????????pre?=?cur
????????????cur?=?temp
????????head.next?=?None
????????return?pre
????def?print_list(self,?head):
????????init_data?=?[]
????????while?head?is?not?None:
????????????init_data.append(head.get_data())
????????????head?=?head.next
????????return?init_data
if?__name__=='__main__':
????head=Node('head')
????link=List(head)
????for?i?in?range(10):
????????node=Node(i)
????????link.append(node)
????print(link.print_list(head))
實例073:反向輸出鏈表
題目:?反向輸出一個鏈表。
class?Node:
????def?__init__(self,?data):
????????self.data?=?data
????????self.next?=?None
????def?get_data(self):
????????return?self.data
class?List:
????def?__init__(self,?head):
????????self.head?=?head
????def?is_empty(self):?
????????return?self.get_len()?==?0
????def?get_len(self):??
????????length?=?0
????????temp?=?self.head
????????while?temp?is?not?None:
????????????length?+=?1
????????????temp?=?temp.next
????????return?length
????def?append(self,?node):
????????temp?=?self.head
????????while?temp.next?is?not?None:
????????????temp?=?temp.next
????????temp.next?=?node
????def?delete(self,?index):?
????????if?index?1?or?index?>?self.get_len():
????????????print("給定位置不合理")
????????????return
????????if?index?==?1:
????????????self.head?=?self.head.next
????????????return
????????temp?=?self.head
????????cur_pos?=?0
????????while?temp?is?not?None:
????????????cur_pos?+=?1
????????????if?cur_pos?==?index-1:
????????????????temp.next?=?temp.next.next
????????????temp?=?temp.next
????def?insert(self,?pos,?node):
????????if?pos?1?or?pos?>?self.get_len():
????????????print("插入結(jié)點位置不合理")
????????????return
????????temp?=?self.head
????????cur_pos?=?0
????????while?temp?is?not?Node:
????????????cur_pos?+=?1
????????????if?cur_pos?==?pos-1:
????????????????node.next?=?temp.next
????????????????temp.next?=node
????????????????break
????????????temp?=?temp.next
????def?reverse(self,?head):
????????if?head?is?None?and?head.next?is?None:
????????????return?head
????????pre?=?head
????????cur?=?head.next
????????while?cur?is?not?None:
????????????temp?=?cur.next
????????????cur.next?=?pre
????????????pre?=?cur
????????????cur?=?temp
????????head.next?=?None
????????return?pre
????def?print_list(self,?head):
????????init_data?=?[]
????????while?head?is?not?None:
????????????init_data.append(head.get_data())
????????????head?=?head.next
????????return?init_data
if?__name__=='__main__':
????head=Node('head')
????link=List(head)
????for?i?in?range(10):
????????node=Node(i)
????????link.append(node)
????print(link.print_list(head))
????print(link.print_list(link.reverse(head)))
實例074:列表排序、連接
題目:?列表排序及連接。
程序分析:?排序可使用 sort() 方法,連接可以使用 + 號或 extend() 方法。
a=[2,6,8]
b=[7,0,4]
a.extend(b)
a.sort()
print(a)
實例075:不知所云
題目:?放松一下,算一道簡單的題目。
程序分析:?鬼知道是什么。
for?i?in?range(5):
????n?=?0
????if?i?!=?1:?
???????n?+=?1
????if?i?==?3:?
???????n?+=?1
????if?i?==?4:?
???????n?+=?1
????if?i?!=?4:?
???????n?+=?1
????if?n?==?3:?
??????print?(64?+?i)
實例076:做函數(shù)
題目:?編寫一個函數(shù),輸入n為偶數(shù)時,調(diào)用函數(shù)求1/2+1/4+…+1/n,當輸入n為奇數(shù)時,調(diào)用函數(shù)1/1+1/3+…+1/n
def?peven(n):
????i?=?0
????s?=?0.0
????for?i?in?range(2,n?+?1,2):
????????s?+=?1.0?/?i
????return?s
def?podd(n):
????s?=?0.0
????for?i?in?range(1,?n?+?1,2):
????????s?+=?1.0?/?i
????return?s
def?dcall(fp,n):
????s?=?fp(n)
????return?s
if?__name__?==?'__main__':
????n?=?int(input('input?a?number:?'))
????if?n?%?2?==?0:
????????sum?=?dcall(peven,n)
????else:
????????sum?=?dcall(podd,n)
????print?(sum)
實例077:遍歷列表
題目:?循環(huán)輸出列表
l=['moyu','niupi','xuecaibichi','shengfaji','42']
for?i?in?range(len(l)):????
???print(l[i])
實例078:字典
題目:?找到年齡最大的人,并輸出。請找出程序中有什么問題。
person?=?{"li":18,"wang":50,"zhang":20,"sun":22}
m?=?'li'
for?key?in?person.keys():
????if?person[m]?????????m?=?key
print?('%s,%d'?%?(m,person[m]))
實例079:字符串排序
題目:?字符串排序。
l=['baaa','aaab','aaba','aaaa','abaa']
l.sort()
print(l)
實例080:猴子分桃
題目:?海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子平均分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
i?=?0
j?=?1
x?=?0
while?(i?5)?:
????x?=?4?*?j
????for?i?in?range(0,5)?:
????????if(x%4?!=?0)?:
????????????break
????????else?:
????????????i?+=?1
????????x?=?(x/4)?*?5?+1
????j?+=?1
print(x)
for?p?in?range(5):
????x=(x-1)/5*4
print(x)
實例081:求未知數(shù)
題目:?809*??=800*??+9*?? 其中??代表的兩位數(shù), 809*??為四位數(shù),8*??的結(jié)果為兩位數(shù),9*??的結(jié)果為3位數(shù)。求??代表的兩位數(shù),及809*??后的結(jié)果。
a?=?809
for?i?in?range(10,100):
????b?=?i?*?a
if?b?>=?1000?and?b?<=?10000?and?8?*?i?100?and?9?*?i?>=?100:
????????print(b,'?=?800?*?',?i,?'?+?9?*?',?i)
for?i?in?range(10,100):
if?8*i>99?or?9*i<100:
continue
if?809*i==800*i+9*i:
????????print(i)
break
實例082:八進制轉(zhuǎn)十進制
題目:?八進制轉(zhuǎn)換為十進制
n=eval('0o'+str(int(input('八進制輸入:'))))
print(n)
實例083:制作奇數(shù)
題目:?求0—7所能組成的奇數(shù)個數(shù)。
程序分析:
組成1位數(shù)是4個。1,3,5,7結(jié)尾 組成2位數(shù)是7*4個。第一位不能為0 組成3位數(shù)是784個。中間隨意 組成4位數(shù)是788*4個。
sum?=?4
s?=?4
for?j?in?range(2,9):
???print(sum)
????if?j?<=?2:
???????s?*=?7
????else:
???????s?*=?8
????sum?+=?s???
??print('sum?=?%d'?%?sum)
實例084:連接字符串
題目:?連接字符串。
delimiter?=?','
mylist?=?['Brazil',?'Russia',?'India',?'China']
print(delimiter.join(mylist))
實例085:整除
題目:?輸入一個奇數(shù),然后判斷最少幾個 9 除于該數(shù)的結(jié)果為整數(shù)。
程序分析:?999999 / 13 = 76923。
zi?=?int(input('輸入一個數(shù)字:'))
n1?=?1
c9?=?1
m9?=?9
sum?=?9
while?n1?!=?0:
????if?sum?%?zi?==?0:
????????n1?=?0
????else:
????????m9?*=?10
????????sum?+=?m9
????????c9?+=?1
print?('%d?個?9?可以被?%d?整除?:?%d'?%?(c9,zi,sum))
r?=?sum?/?zi
print?('%d?/?%d?=?%d'?%?(sum,zi,r))
實例086:連接字符串II
題目:?兩個字符串連接程序。
a='guangtou'
b='feipang'
print(b+a)
實例087:訪問類成員
題目:?結(jié)構(gòu)體變量傳遞。
class?student:????????
????x?=?0????????
????c?=?0????
????def?f(stu):????????
????????stu.x?=?20????????
????????stu.c?=?'c'????
????????a=?student()????
????????a.x?=?3????
????????a.c?=?'a'???
????????f(a)????
print(a.x,a.c)
實例088:打印星號
題目:?讀取7個數(shù)(1—50)的整數(shù)值,每讀取一個值,程序打印出該值個數(shù)的*。
for?i?in?range(3):
???print('*'*int(input('input?a?number:?')))
實例089:解碼
題目:?某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。
n=input()
n?=?str(n)
a=[]
for?i?in?range(4):
????a.append(int(n[i])+5)
a[0],a[3]=a[3],a[0]
a[1],a[2]=a[2],a[1]
print?("".join('%s'?%s?for?s?in?a))
實例090:列表詳解
題目:?列表使用實例。
#list??
#新建列表?
testList=[10086,'中國移動',[1,2,4,5]]??
#訪問列表長度??
print?(len(testList)??)
#到列表結(jié)尾
?print?(testList[1:])
#向列表添加元素????
testList.append('i\'m?new?here!')??
print?(len(testList)??)
print?(testList[-1]??)
#彈出列表的最后一個元素??
print?(testList.pop(1)??)
print?(len(testList)??)
print?(testList??)
st?comprehension??
#后面有介紹,暫時掠過??
matrix?=?[[1,?2,?3],??
[4,?5,?6],??
[7,?8,?9]]??
print?(matrix??)
print?(matrix[1]??)
col2?=?[row[1]?for?row?in?matrix]#get?a??column?from?a?matrix??
print?(col2??)
col2even?=?[row[1]?for?row?in?matrix?if??row[1]?%?2?==?0]#filter?odd?item??
print?(col2even)
實例091:time模塊
題目:?時間函數(shù)舉例1。
import?time????
print(time.ctime(time.time()))????
print(time.asctime(time.localtime(time.time())))????
print(time.asctime(time.gmtime(time.time())))
實例092:time模塊II
題目:?時間函數(shù)舉例2。
程序分析:?如何浪費時間。
import?time????
start?=?time.time()????
for?i?in?range(3000):????????
???print(i)????
end?=?time.time()????
print?(end?-?start)
實例093:time模塊III
題目:?時間函數(shù)舉例3。
程序分析:?如何浪費時間。
import?time????
start?=?time.clock()????
for?i?in?range(100):????????
???print(i)????
end?=?time.clock()????
print('different?is?%6.3f'?%?(end?-?start))
實例094:time模塊IV
題目:?時間函數(shù)舉例4。
import?time
import?random
play_it?=?input('do?you?want?to?play?it.(\'y\'?or?\'n\')')
while?play_it?==?'y':
????c?=?input('input?a?character:\n')
????i?=?random.randint(0,2**32)?%?100
????print?('please?input?number?you?guess:\n')
????start?=?time.clock()
????a?=?time.time()
????guess?=?int(input('input?your?guess:\n'))
????while?guess?!=?i:
????????if?guess?>?i:
????????????print('please?input?a?little?smaller')
????????????guess?=?int(input('input?your?guess:\n'))
????????else:
????????????print('please?input?a?little?bigger')
????????????guess?=?int(input('input?your?guess:\n'))
????end?=?time.clock()
????b?=?time.time()
????var?=?(end?-?start)?/?18.2
????print?(var)
????#?print?'It?took?you?%6.3?seconds'?%?time.difftime(b,a))
????if?var?15:
????????print?('you?are?very?clever!')
????elif?var?25:
????????print?('you?are?normal!')
????else:
????????print?('you?are?stupid!')
????print?('Congradulations')
????print?('The?number?you?guess?is?%d'?%?i)
????play_it?=?input('do?you?want?to?play?it.')
實例095:轉(zhuǎn)換時間格式
題目:?字符串日期轉(zhuǎn)換為易讀的日期格式。
程序分析:?dateutil是個第三方庫。
from?dateutil?import?parser
dt?=?parser.parse("Aug?28?2015?12:00AM")
print?(dt)
實例096:計算復(fù)讀次數(shù)
題目:?計算字符串中子串出現(xiàn)的次數(shù)。
s1='xuebixuebixuebixuebixuebixuebixuebixue'
s2='xuebi'
print(s1.count(s2))
實例097:磁盤寫入
題目:?從鍵盤輸入一些字符,逐個把它們寫到磁盤文件上,直到輸入一個 # 為止。
from?sys?import?stdout
filename?=?input('輸入文件名:\n')
fp?=?open(filename,"w")
ch?=?input('輸入字符串:\n')
while?ch?!=?'#':
????fp.write(ch)
????stdout.write(ch)
????ch?=?input('')
fp.close()
實例098:磁盤寫入II
題目:?從鍵盤輸入一個字符串,將小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一個磁盤文件"test"中保存。
fp?=?open('test.txt','w')
string?=?input('please?input?a?string:\n')
string?=?string.upper()
fp.write(string)
fp?=?open('test.txt','r')
print?(fp.read())
fp.close()
實例099:磁盤讀寫
題目:?有兩個磁盤文件A和B,各存放一行字母,要求把這兩個文件中的信息合并(按字母順序排列), 輸出到一個新文件C中。
import?string
fp?=?open('test1.txt')
a?=?fp.read()
fp.close()
fp?=?open('test2.txt')
b?=?fp.read()
fp.close()
fp?=?open('test3.txt','w')
l?=?list(a?+?b)
l.sort()
s?=?''
s?=?s.join(l)
fp.write(s)
fp.close()
實例100:列表轉(zhuǎn)字典
題目:?列表轉(zhuǎn)換為字典。
i?=?['a',?'b']
l?=?[1,?2]
print?(dict(zip(i,l)))