寫一段代碼,每天寫寫Python自然就會(huì)了
讀一篇博客,寫一段代碼,每天寫寫Python自然就會(huì)了,每日Python第1天 這個(gè)系列的專欄是為了保持 Python 手感而創(chuàng)建的,你也可以用來學(xué)習(xí) Python
“寫著寫著發(fā)現(xiàn),這些可能都是面試題哦~
”
反轉(zhuǎn)數(shù)字
問題場(chǎng)景 把數(shù)字 789 轉(zhuǎn)換為 987。
典型的數(shù)字翻轉(zhuǎn)問題。
解決思路 將數(shù)字的百位十位個(gè)位拆解出來,就解開了
編碼如下
def?reverse_number(number):
????baiwei?=?int(number/100)
????shiwei?=?int(number%100/10)
????gewei?=?int(number%10)
????return?gewei*100+shiwei*10+baiwei
new_number?=?reverse_number(789)
print(new_number)
類的說明文檔
問題場(chǎng)景 給新創(chuàng)建的類添加說明文檔
解決思路 在類名下使用三引號(hào)即可添加說明文檔,使用 類名,__doc__ 可調(diào)用該文檔
編碼如下
class?My_Class(object):
????"""你好"""
print(My_Class.__doc__)
設(shè)置 Python 文件的編碼
問題場(chǎng)景 Python 文件設(shè)置默認(rèn)編碼。
解決思路 Python 腳本文件默認(rèn)是使用 UTF-8 編碼格式進(jìn)行編碼的,一般無需指定編碼,但我們也可自行設(shè)置編碼,Python2 代碼文件一般都帶該行注釋。設(shè)置方式是使用一行注釋,要求格式需滿足下述正則表達(dá)式。
編碼如下
coding[=:]\s*([-\w.]+)
聲明位置在 Python 文件的第一行或者第二行,注意 : 或 = 前沒有空格。例如下述代碼:
#?-*-?coding:utf-8?-*-
也可以使用大寫
#?-*-?coding:UTF-8?-*-
旋轉(zhuǎn)字符串
問題場(chǎng)景 一個(gè)字符串,一個(gè)數(shù)字,完成如下操作
字符串為 abcde,數(shù)字為 3,則輸出cdeab;- 字符串為abcde,數(shù)字為 1,則輸出eabcd;- 字符串為abcde,數(shù)字為 0,則輸出abcde;- ……解決思路 一個(gè)字符串切片運(yùn)用的問題。
編碼如下
def?reverse_str(my_str,offset):
????#?如果數(shù)字為?0,順序默認(rèn)不變
????if?offset?==0:
????????return?my_str
????left?=?my_str[:len(my_str)-offset]
????right?=?my_str[len(my_str)-offset:]
????return?right?+?left
實(shí)現(xiàn)控制臺(tái)滾動(dòng)條
問題場(chǎng)景 在控制臺(tái)輸出滾動(dòng)條。
解決思路 使用字符串格式化進(jìn)行實(shí)現(xiàn),例如用 > 表示進(jìn)展,用 / 表示未完成的進(jìn)展,使用 ljust() 方法返回一個(gè)原字符串左對(duì)齊,并使用填充字符(默認(rèn)空格)填充至指定長(zhǎng)度的新字符串。
編碼如下 逐步實(shí)現(xiàn)
#?打印一行?>>>
progress_str?=?">"?*?100
print(progress_str)
填充一部分 >,再填充另一部分 /。
#?打印一行?>>>
progress_str?=?">"*20
#?填充50個(gè)?-
progress_str?=?progress_str.ljust(100,'/')
print(progress_str)
實(shí)現(xiàn)循環(huán)操作
import?time
for?i?in?range(0,?11):
????time.sleep(0.3)
????current?=?i/10
????#?進(jìn)度條
????progress_str?=?'{0:s}{1:.0%}'.format(
????????(int(current*10)*'>').ljust(10,?'/'),?current)
????print(progress_str)
為了讓其在一行出現(xiàn),可以修改代碼為如下格式,注意最后一行代碼。
import?time
for?i?in?range(0,?11):
????time.sleep(0.3)
????current?=?i/10
????#?進(jìn)度條
????progress_str?=?'{0:s}{1:.0%}'.format(
????????(int(current*10)*'>').ljust(10,?'/'),?current)
????print(f'\r{progress_str}',end='')
print 函數(shù)直接寫入文件
問題場(chǎng)景 如果不希望將 print 函數(shù)輸出的內(nèi)容,打印到控制臺(tái),而是直接輸入到文件中,該如何操作?
解決思路 print() 函數(shù)有一個(gè)參數(shù)叫做 file,用它就行。
編碼如下
file?=?open('runtime.log',?'a+',?encoding='utf-8')
print('測(cè)試日志',?file=file)
合并 2 個(gè)列表
問題場(chǎng)景 合并 2 個(gè)列表,并要求合并之后的列表有順序。例如 my_list1 = [1,2,3] , my_list2 = [1,3,5] ,合并之后是 my_list = [1,1,2,3,3,5]
解決思路 先合并 2 個(gè)列表,然后判斷其各個(gè)元素大小,判斷的時(shí)候使用冒泡排序即可完成任務(wù)。編碼如下
def?merge(l1,?l2):
????my_list?=?l1?+?l2
????n?=?len(my_list)
????for?i?in?range(n):
????????for?j?in?range(0,?n?-?i?-?1):
????????????if?my_list[j]?>?my_list[j?+?1]:
????????????????my_list[j],?my_list[j?+?1]?=?my_list[j?+?1],?my_list[j]
????print(my_list)
if?__name__?==?'__main__':
????my_list1?=?[4,?2,?6]
????my_list2?=?[1,?3]
????merge(my_list1,?my_list2)


Python“寶藏級(jí)”公眾號(hào)【Python之王】專注于Python領(lǐng)域,會(huì)爬蟲,數(shù)分,C++,tensorflow和Pytorch等等。
近 2年共原創(chuàng) 100+ 篇技術(shù)文章。創(chuàng)作的精品文章系列有:
日常收集整理了一批不錯(cuò)的?Python?學(xué)習(xí)資料,有需要的小伙可以自行免費(fèi)領(lǐng)取。
獲取方式如下:公眾號(hào)回復(fù)資料。領(lǐng)取Python等系列筆記,項(xiàng)目,書籍,直接套上模板就可以用了。資料包含算法、python、算法小抄、力扣刷題手冊(cè)和 C++ 等學(xué)習(xí)資料!
