萬法裨益,實戰爲王2

實例 :深淺拷貝

題目 將一個列表的數據複製到另一個列表中。

程序分析 使用列表[:],拿不準可以調用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)

測試結果:
在這裏插入圖片描述

結語

對於你喜歡的事想去做的事,你必須付出百分之一千的努力,你知道這一路可能會有很多困難,會有堅持不下去想要放棄的時候,也有時候,你不一定會得到你想要的結果,但你一定要相信,就算再貧瘠的土地你日日灌溉,總有那麼一天會長出花草來的,所以你一定要堅持。
最後,送給所有在孤獨前行的人一句話:願你以渺小啓程,以偉大結尾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章