關(guān)于Python,你需要知道的一些簡(jiǎn)單的小練習(xí)

前言:

大多數(shù)題目來(lái)源于菜鳥(niǎo)教程

題目:用過(guò)哪些模塊
  • os 對(duì)于系統(tǒng)層面操作的內(nèi)置模塊
  • sys 提供程序本身路徑
  • time 時(shí)間模塊
  • random 隨機(jī)數(shù)
  • datetime 重新封裝的time模塊,提供更多接口和類
  • hashlib 加密模塊,提供字符加密功能
  • logging 日志模塊
  • ......
題目:python2與python3的主要差異

python3中:

  • print成為函數(shù),要使用()
  • 編碼問(wèn)題,不再有Unicode對(duì)象,默認(rèn)str就是unicode
  • 除法變化.除號(hào)返回浮點(diǎn)數(shù),并且使用//表示除
  • 優(yōu)化函數(shù),super()方便直接調(diào)用父類函數(shù)
  • 一切返回迭代器,省內(nèi)存
  • 新增yield from 鏈接子生成器
  • asyncio內(nèi)置庫(kù),async/await 原生協(xié)程支持異步編程
  • 新增內(nèi)置庫(kù)mock,asyncio等
題目:python函數(shù)問(wèn)題,異常處理

try: 可能會(huì)拋出異常的代碼
except 可以捕獲多個(gè)異常并處理
else 異常沒(méi)有發(fā)生的時(shí)候代碼邏輯
finally 直接放行

題目:Pyhton性能分析與優(yōu)化,GIL
  • 同一時(shí)間只能有一個(gè)線程執(zhí)行字節(jié)碼

  • CPU密集程序難以利用多核優(yōu)勢(shì) 可以使用進(jìn)程池規(guī)避

  • IO密集不影響 如果是IO密集時(shí)可以使用多線程/協(xié)程

題目:Python生成器與協(xié)程

.....

題目:Python單元測(cè)試
  • nose/pytest較為常用的庫(kù)
  • mock 模塊用于模擬替換網(wǎng)絡(luò)請(qǐng)求等
題目:字典,列表推導(dǎo),生成器
a = ['a','b','c']
b = [1,2,3]
d = {k:v for k,v in zip(a,b)}
print(d)

# 一個(gè)列表推導(dǎo)式
l = [i for i in range(10)]
print(l)
# 一個(gè)列表生成器,可以節(jié)省內(nèi)存
l = (i for i in range(10))
print(type(l))
for i in l:
    print(i)
題目:使用過(guò)python哪些裝飾器
題目:python的解釋器
  • Cpython 命令行打開(kāi)的python
  • Ipython交互式的
    ....
題目:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的裝飾器

閉包是裝飾器的基礎(chǔ)

  • 必須要有內(nèi)嵌函數(shù)
  • 內(nèi)嵌函數(shù)必須要引用外部函數(shù)的變量
  • 外部函數(shù)的返回值必須是內(nèi)嵌函數(shù)
def wsm(func):
    def wzj(*args,**kwargs):
        for i in range(10):
            print(i)
        res = func(*args,**kwargs)
        return res
    return wzj
@wsm
def func1():
    print('hello')
func1()
題目:什么是閉包

指定義在一個(gè)函數(shù)內(nèi)部的函數(shù),一個(gè)函數(shù)看做一個(gè)包,內(nèi)層函數(shù)可以使用外層函數(shù)中的變量

題目:列表推導(dǎo)式和生成器表達(dá)式
print([x % 2 for x in range(10)])
print((x % 2 for x in range(10)))
題目:python遞歸的最大層數(shù)

998

題目:python的垃圾回收機(jī)制

.....

題目:簡(jiǎn)述python的深淺拷貝
  • copy():淺拷貝,僅僅拷貝數(shù)據(jù)集合的第一層數(shù)據(jù)

  • deepcopy:深拷貝,拷貝數(shù)據(jù)集合的所有層

題目:列舉字符串,列表,元組,字典每個(gè)常用的5個(gè)方法
  • 字符串 repleace,strip,split,reverse,upper(變大寫),lower(變小寫),join....
  • 列表
    append,pop,insert,remove,sort,count,index...
  • 元組
    index,count,len(),dir()
  • 字典
    get,keys,values,pop,clear,items,update
題目:刪除一個(gè)列表中的重復(fù)元素list1=[1,4,5,6,6,8,9,9,2,7]

set天然去重

list1=[1,4,5,6,6,8,9,9,2,7]
print(list(set(list1)))
題目:倆個(gè)列表求交集和差集list1=[1,4,5,6,7],list2=[2,4,6,8,7]

考查使用set集合,&交集,^差集

list1=[1,4,5,6,7]
list2=[2,4,6,8,7]
set1 = set(list1)
set2 = set(list2)
print(set1&set2)
print(set1^set2)
題目:寫一個(gè)列表生成式,公差為2
print([x*2 for x in range(12)])
題目:常見(jiàn)的字符串格式化有哪幾種

1.占位符 %d % ()
2.format '{} 你好'.format(name)
3.f-string(python3.6才有)
s = f'{name}你好'

題目:list = [{'name':'a','age':20},{'name':'b','age':25},{'name':'c','age':28}],列表按從大到小排序
import operator
list = [{'name':'a','age':20},{'name':'b','age':25},{'name':'c','age':28}]
a = sorted(list,key=operator.itemgetter('age'),reverse=True)
print(a)
題目:反轉(zhuǎn)字符串Aser

利用切片反轉(zhuǎn)

a = 'Aser'
print(a[::-1])
題目:文件操作時(shí)xreadlines和readlines的區(qū)別

readlines是把全部?jī)?nèi)容讀到內(nèi)存,并解析為list
xreadlines直接返回一個(gè)迭代器

題目:列舉布爾值為False的常見(jiàn)值
0,[],{},(),'',False,None
題目:is和==的區(qū)別

is比較的是id
==比較的是值

題目:字典排序d= {'a':24,'b':32,'c':12,'d':20}

考查知不知道sorted排序

d = {'a':24,'b':32,'c':12,'d':20}
a = sorted(d.values())
print(a)
題目:有四個(gè)數(shù)字:1、2、3、4,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?各是多少?

程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。

for i in range(1, 5):
    for n in range(1, 5):
        for k in range(1, 5):
            if (i != n) and (n != k) and (i != k):
                print(i, n, k)

題目:輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出

range隨機(jī)輸入三個(gè)數(shù),然后每次添加到列表中,最后sort排序從大到小,打印排序后的列表

l = []
for i in range(3):
    x = int(input('請(qǐng)輸入:\n'))
    l.append(x)
l.sort()
print(l)
題目:斐波那契數(shù)列

我討厭數(shù)學(xué),但很遺憾,面試時(shí)被問(wèn)到了,然而我不會(huì)
0、1、1、2、3、5、8、13、21、34

題目:將一個(gè)列表的數(shù)據(jù)復(fù)制到另一個(gè)列表中

利用切片打印的方式進(jìn)行復(fù)制,如果切片沒(méi)有指定從哪開(kāi)始切,那么會(huì)打印整個(gè)列表

a = [1,2,3]
b = a[:]
print(b)
題目:暫停一秒輸出
import  datetime
import time
print('開(kāi)始時(shí)間:',datetime.datetime.now())
time.sleep(1)
print('結(jié)束時(shí)間:',datetime.datetime.now())
題目:暫停一秒輸出,并格式化當(dāng)前時(shí)間
import  datetime
import time
print('開(kāi)始時(shí)間:',time.strftime('%Y-%m-%d %H:%M:%S'))
time.sleep(1)
print('結(jié)束時(shí)間:',time.strftime('%Y-%m-%d %H:%M:%S'))
題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。

判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)

# 求奇數(shù),不準(zhǔn)確
l = []
for i in range(101,201):
    if i % 2 != 0:
        l.append(i)
print(l)
題目:打印出所有的"水仙花數(shù)",所謂"水仙花數(shù)"是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)"水仙花數(shù)",因?yàn)?53=1的三次方+5的三次方+3的三次方

利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位,主要是能寫出一個(gè)數(shù)字的個(gè)十百位上的數(shù)字

for n in range(100,1000):
    i = n // 100  # 分解一個(gè)數(shù)后的百位數(shù)
    j = n // 10 % 10  # 分解一個(gè)數(shù)后的十位數(shù)
    k = n % 10  # 分解一個(gè)數(shù)后的個(gè)位數(shù)
    if n == i ** 3 + j ** 3 + k ** 3:
        print(n)
題目:利用條件運(yùn)算符的嵌套來(lái)完成此題:學(xué)習(xí)成績(jī)>=90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示

python 內(nèi)判斷及運(yùn)算符使用

s = int(input('輸入分?jǐn)?shù):\n'))
if s >= 90:
    w = 'A'
elif s >= 60:
    w = 'B'
else:
    w = 'C'
print('%d 屬于 %s' % (s, w))
題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)

主要考查string下的方法

s = input('請(qǐng)輸入一個(gè)字符串:\n')
zm = 0
kb = 0
sz = 0
qt = 0
for i in s:
    if i.isalpha():
        zm += 1
    elif i.isspace():
        kb += 1
    elif i.isdigit():
        sz += 1
    else:
        qt += 1
print('字母有:%d個(gè),空白有:%d個(gè),數(shù)字有:%d個(gè),其他有:%d個(gè)'% (zm,kb,sz,qt))
題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時(shí),共經(jīng)過(guò)多少米?第10次反彈多高?

考查sum求和函數(shù)

# 幾次反彈的總數(shù)
tour = []
# 幾次反彈的高度計(jì)數(shù)
height = []

hei = 100 #起始高度
tim = 10 # 次數(shù)
for i in range(1,tim +1):
    if i == 1:
        tour.append(hei)
    else:
        # 計(jì)算運(yùn)行總路程
        tour.append(2*hei)
    hei /= 2
    height.append(hei)
# sum()是將矩陣中所有的元素進(jìn)行求和
print('總高度:tour = %s' % sum(tour))
print('第10次反彈高度:height = {0}'.format(height[-1]))
題目:打印一個(gè)菱形圖案

主要考查range取奇數(shù)和偶數(shù),reversed反轉(zhuǎn)函數(shù),還有center居中

s = '*'
for i in range(1, 8, 2):
    print((i * s).center(7))
for i in reversed(range(1,6,2)):
    print((i*s).center(7))
題目:將輸入的字符,以相反順序打印出來(lái)
a = input('請(qǐng)輸入:\n')
listall = list(reversed(a))
for i in listall:
    print(i)
題目:給一個(gè)不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字

考查如何分解每一位數(shù)

x = int(input('請(qǐng)輸入一個(gè)數(shù):\n'))
a = x // 10000 # 萬(wàn)
b = x % 10000 // 1000 # 千
c = x % 1000 // 100 # 百
d = x % 100 // 10 # 十
e = x % 10 # 個(gè)
if a != 0:
    print('5位數(shù)倒序:',e,d,c,b,a)
題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同

注意len只能取str類型

x = int(input('請(qǐng)輸入一個(gè)數(shù)字:\n'))
x = str(x)
if len(x) != 5:
    print('這不是一個(gè)5位數(shù)字')
else:
    if x[0] != x[4] and x[1] != x[3]:
        print('這不是一個(gè)回文數(shù)')
    else:
        print('這是一個(gè)回文數(shù):',x)
題目:['one', 'two', 'three']倒序排列此列表

列表倒序的三種方法分片,reverse,reversed,注意reversed后是一個(gè)對(duì)象要重新轉(zhuǎn)為列表類型

a = ['one', 'two', 'three']
a.reverse()
print(a)

a = list(reversed(a))
print(a)

print(a[::-1])
題目:使用逗號(hào)分隔列表

考查join的使用,注意join是字符串下的方法,所以后邊列表生成器要使用str進(jìn)行轉(zhuǎn)換

L = [1,2,3,4,5]
s = ','.join(str(n) for n in L)
print(s)
題目:求100之內(nèi)的素?cái)?shù)

素?cái)?shù),除了1和能被自身整除的數(shù)

for i in range(1,101):
    if i >1:
        for j in range(2,i):
            if i % j == 0:
                break
        else:
            print(i)
題目:兩個(gè) 3 行 3 列的矩陣,實(shí)現(xiàn)其對(duì)應(yīng)位置的數(shù)據(jù)相加,并返回一個(gè)新矩陣

分行分列之后行列分別相加,需要用到倆個(gè)for循環(huán)

X = [[12, 7, 3],
     [4, 5, 6],
     [7, 8, 9]]

Y = [[5, 8, 1],
     [6, 7, 3],
     [4, 5, 9]]

result = [[0, 0, 0],
          [0, 0, 0],
          [0, 0, 0]]
for i in range(3):

    for j in range(3):

        result[i][j] = X[i][j] + Y[i][j]
for r in result:
    print(r)

題目:統(tǒng)計(jì)1到100之間的和
a = sum(range(1,101))
print(a)
題目:使用lambda來(lái)創(chuàng)建匿名函數(shù)
題目:輸出隨機(jī)數(shù)
import random
print random.random()           #輸入0-1之間的隨機(jī)數(shù)
print random.uniform(10,20)     #輸出10-20之間的隨機(jī)數(shù)
print random.randint(10,20)     #輸出10-20之間的隨機(jī)整數(shù)
print random.choice([x for x in range(1,100)]) #輸出1-99間的隨機(jī)數(shù)
題目:查找字符串

字符串中的常用方法,find,會(huì)打印查找到的字符串最小索引

s = 'asdjf123'
b = '123'
print(s.find(b))
# 輸出結(jié)果為最小索引5
題目:輸入三個(gè)數(shù)字,按大小順序排列打印
s = []

for i in range(3):
    a = int(input('請(qǐng)輸入:\n'))
    s.append(a)
d = set(s)
for x in d:
    print(x)
題目:列表轉(zhuǎn)換為字典

注意列表要雙數(shù)

a = [1,2]
c = ['a','b']
b = dict([a,c])
print(b)
題目:向一個(gè)文件中輸入字母轉(zhuǎn)換為大寫

考查字符串upper變大寫的方法還有打開(kāi)文件并寫入使用with open配合

with open('test.txt', 'w') as f:
    s = input('請(qǐng)輸入字母:\n')
    f.write(s.upper())
題目:計(jì)算字符串中子串出現(xiàn)的次數(shù)

考查字符串的方法count,統(tǒng)計(jì)次數(shù)

str1 = input('請(qǐng)輸入一個(gè)字符串:\n')
str2 = input('請(qǐng)輸入一個(gè)子字符串:\n')
ncount = str1.count(str2)
print(ncount)
題目:字符串日期轉(zhuǎn)換為易讀的日期格式

題目:寫一個(gè)判斷輸入字符串長(zhǎng)度的函數(shù)
def cd():
    s = input('請(qǐng)輸入一個(gè)字符串:\n')
    print(len(s))
cd()
題目:列表排序及連接

考查列表排序sort的使用,還有連接倆個(gè)列表的兩種方法extend

a = [1, 3, 2]
b = [3, 4, 5]
a.sort()
print(a)
print(a+b)
a.extend(b)
print(a)
題目:字典的排序

考查sorted,打印整個(gè)字典就需要lambda匿名函數(shù)配合

person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
a = sorted(person.values())
print('按values大小排序,只打印values:',a)
a = sorted(person.items(),key=lambda x:x[1])
print('按values大小排序并打印整個(gè)字典:',a)
題目:not,and,or優(yōu)先級(jí)
# 輸出為3
x = True
y = False
z = False

if not x or y:
    print(1)
elif not x or not y and z:
    print(2)
elif not x or y or not y and x:
    print(3)
else:
    print(4)
加了星號(hào) * 的參數(shù)會(huì)以元組(tuple)的形式導(dǎo)入,存放所有未命名的變量參數(shù)
def greetPerson(*name):
    print('Hello', name)
  
greetPerson('Runoob', 'Google')
# 輸出結(jié)果:Hello ('Runoob', 'Google')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容