實例 :深淺拷貝
題目 將一個列表的數據複製到另一個列表中。
程序分析 使用列表[:],拿不準可以調用copy模塊。需要記住的點:
1.**直接賦值:**兩個變量指向同一個對象;
2.**淺拷貝:**只拷貝第一層內容;
3.**深拷貝:**對象中的所有內容都拷貝。
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)
測試結果:
實例:九九乘法表
題目 輸出 9*9 乘法口訣表。
程序分析 分行與列考慮,共9行9列,i控制行,j控制列。
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%2d '%(i,j,i*j),end='')
print()
測試結果:
時間日期格式化
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身
a.可以使用 time 模塊的 strftime 方法來格式化日期
import time
# 格式化成2019-11-23 22:53:00形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 格式化成Sat Nov 23 22:53:00 2019形式
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# 將格式字符串轉換爲時間戳,每個時間戳都以自從1970年1月1日午夜(曆元)經過了多長時間(秒數)來表示。
a = "Sat Nov 23 22:53:00 2019"
print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))
測試結果:
**b.使用 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)
測試結果:
c.順便提一下怎麼獲取某月日曆 ,calendar模塊有很廣泛的方法用來處理年曆和月曆,例如打印某月的月曆:
import calendar
cal = calendar.month(2019, 11)
print("以下輸出2019年11月份的日曆:")
print(cal)
測試結果:
實例:養兔子
題目 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數爲多少?
程序分析 我認爲原文的解法有點扯,沒有考慮3個月成熟的問題,人家還是嬰兒怎麼生孩子?考慮到三個月成熟,可以構建四個數據,其中:一月兔每個月長大成爲二月兔,二月兔變三月兔,三月兔變成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。
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)
測試結果:
實例:100到200的素數
題目 判斷101-200之間有多少個素數,並輸出所有素數。
程序分析 判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
import math
for i in range(100,200):
for j in range(2,round(math.sqrt(i))+1):
if i%j==0:
break
else:
print(i,end=' ')
測試結果:
實例:所有水仙花數
題目 打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。
程序分析 利用for循環控制100-999個數,每個數分解出個位,十位,百位。
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)
測試結果:
實例:分解質因數
題目 將一個整數分解質因數。例如:輸入90,打印出90=233*5。
程序分析 根本不需要判斷是否是質數,從2開始向數本身遍歷,能整除的肯定是最小的質數。
while 1:
print()
target=int(input('輸入一個整數:'))
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
測試結果:
實例:字符串構成
題目 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
程序分析 很簡單,知道isspace()、isdight()和isalpha()等方法的使用,利用 while 或 for 語句,爲輸入的各種字符串計數即可。
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)
測試結果:
結語
對於你喜歡的事想去做的事,你必須付出百分之一千的努力,你知道這一路可能會有很多困難,會有堅持不下去想要放棄的時候,也有時候,你不一定會得到你想要的結果,但你一定要相信,就算再貧瘠的土地你日日灌溉,總有那麼一天會長出花草來的,所以你一定要堅持。
最後,送給所有在孤獨前行的人一句話:願你以渺小啓程,以偉大結尾。