【python】每天一個(gè)小練習(xí)

      網(wǎng)友投稿 857 2025-04-01

      文章目錄


      注意規(guī)范

      一、基礎(chǔ)操作題

      二、面向?qū)ο驩OP

      三、算法題

      第一題

      第二題

      第三題

      注意規(guī)范

      (1)加上文件頭

      #!/usr/bin/Python ## -*- coding: utf-8 -*-

      1

      2

      #!/usr/bin/Python指定有什么解釋器運(yùn)行腳本及解釋器所在的位置

      原因:腳本語言共同遵守的規(guī)則:當(dāng)?shù)谝恍袨?#!/path/to/script/interpreter時(shí),指定了用來執(zhí)行本腳本的解釋器。

      例如:

      #!/bin/sh shell腳本 #!/usr/bin/perl perl腳本 #!/usr/bin/python python腳本 #!/usr/bin/python2 python2腳本 #!/usr/bin/python3 python3腳本

      1

      2

      3

      4

      5

      #!/usr/bin/env會(huì)自動(dòng)搜索腳本解釋器的絕對(duì)路徑

      (2)編碼規(guī)范:運(yùn)算符前后加1個(gè)空格(以對(duì)齊為目的可以用tab)、函數(shù)參數(shù)間的逗號(hào)后加1個(gè)空格、global聲明只能放在函數(shù)的開頭、設(shè)置一個(gè)tab鍵為4個(gè)空格

      一、基礎(chǔ)操作題

      1.獲取字符串“123456”最后2個(gè)字符

      strf='123456' print(str[-2:])

      1

      2

      2.一個(gè)編碼為GBK的字符串S,要將其轉(zhuǎn)為UTF-8的字符串

      a="啊啊啊" #py3中默認(rèn)編碼是unicode bytes(a,"gdk") ans1=a.encode("utf-8") print(ans1)

      1

      2

      3

      4

      3.Alist[1,2,3,1,2]對(duì)列表元素去重

      list=[1,3,4,1,2] s1.set(list) print s1

      1

      2

      3

      list[-1]代表最后一個(gè)元素;list[a:-1]指向了倒數(shù)第二個(gè)

      4.實(shí)現(xiàn)“1,2,3”變成[“1”,“2”,“3”]

      str="1,2,3" ans=str.split(',') print(ans)

      1

      2

      3

      5.合并兩個(gè)字典a={“A”:1,“B”:2},b={“C”:3,“D”,4}

      a={"A":1,"B":2} b={"C":3,"D":4} ans=dict(a.items()+b.items()) a.update(b)#用這種方法比較多 print(ans) print(a)

      1

      2

      3

      4

      5

      6

      6.實(shí)現(xiàn)tuple和list的轉(zhuǎn)換

      alist=[123,'abc'] atuple=tuple(alist)

      1

      2

      7.把元組(“a”,“b”)和元組(1,2)變成{“a”:1,“b”:2}

      a=("a","b") b=(1,2) d=dict(zip(a,b))#字典序

      1

      2

      3

      8.打亂一個(gè)列表的元素

      import random x=[i for i in range(100)] print(x) x.random.shuffle() print(x)

      1

      2

      3

      4

      5

      9.給定2個(gè)list,A和B,找出相同元素和不同元素

      a=[i for i in range(1,99,2)] b=[j for j in range(2,100,2)]#偶數(shù) x=[x in a if x in b] y=[y in (a+b) if y not in x]#非共有的數(shù)

      1

      2

      3

      4

      注意列表解析的用法:

      lst1 = [i*2 for i in range(1,11)] print(lst1) # 結(jié)果為[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

      1

      2

      3

      再如:創(chuàng)建一個(gè)全部為問號(hào)的二維數(shù)組(Length行Length列):

      lst1 = [['?'] * Length for i in range(Length)]

      1

      10.a="hello"和b="你好"編碼成bytes類型

      bytes('hello','utf-8') bytes('您好','gbk')

      1

      2

      tuple=(1,2,'hi') print(len(tuple)) list=[100,23,45] print(list[0]) hello=['hi','hello'] world=['earth','field','universe'] hello.append('你好') print(hello) hello.extend(world) #插入列表 print(hello) hello.insert(0,'我的天啊') print(hello) hello.remove('你好') print(hello)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      11.注意打印的格式

      print('The boss named %(name)s is %(age)d-year-old and %(height)g tall.' % boss)

      1

      12.各種隊(duì)列

      隊(duì)列from queue import Queue(maxsize)

      13.輸出所有的大寫字母和數(shù)字

      https://www.cnblogs.com/pyse/p/9847812.html

      14.input注意

      在 Python3.x 中 raw_input() 和 input() 進(jìn)行了整合,去除了 raw_input( ),僅保留了input( )函數(shù),其接收任意任性輸入,將所有輸入默認(rèn)為字符串處理,并返回字符串類型。

      15.三引號(hào)是可以換行寫代碼(有時(shí)候代碼過長(zhǎng),換行會(huì)便于理解和閱讀)

      三引號(hào)字符串作為docstring

      16.(1)全角用2個(gè)標(biāo)準(zhǔn)字符的位置,占2個(gè)字節(jié)

      漢語是全角,注意全角的數(shù)字是半角的數(shù)字的位置的2倍。

      (2)半角用1個(gè)標(biāo)準(zhǔn)字符的位置,占1個(gè)字節(jié)

      英文字母、數(shù)字和字符都是半角

      17.禁止空格和tab鍵混用,indent是縮進(jìn)的意思,會(huì)報(bào)錯(cuò)unindent does not match 啥的

      18.避免使用from … import …

      如A.py中定義 flag=1 B.py中用了 from A import *

      1

      2

      3

      4

      5

      如果在某個(gè)地方改了A.py的flag值——A.flag=0,這時(shí)打印A模塊和B模塊的a的值則不一樣(0,1)

      19.變量只是引用對(duì)象的名稱,不會(huì)創(chuàng)建副本。

      x=[1,2,3,4] y=x y[0]=0 print(x) #[0,2,3,4] print(y) #[0,2,3,4]

      1

      2

      3

      4

      5

      20.遍歷時(shí)刪除列表項(xiàng)

      num_list=[1,2,3,4,5] for i in xrange(len(num_list)): if nym_list[i]==2: num_list.pop(i) else: print num_list[i] print num_list

      1

      2

      3

      4

      5

      6

      7

      會(huì)報(bào)錯(cuò):indexError:list index out of range,可以這么改(多一句):

      num_list=[1,2,3,4,5] for i in xrange(len(num_list)): if i>- len(num_list): break if nym_list[i]==2: num_list.pop(i) else: print num_list[i] print num_list

      1

      2

      3

      4

      5

      6

      7

      8

      9

      或者更好的方法:

      num_list=[1,2,2,4,5] num_list=[i for i in num_list if i!=2] num_list=[] for i in num_list: if i!=2: new_list.append(i)

      1

      2

      3

      4

      5

      6

      7

      8

      21.函數(shù)默認(rèn)參數(shù)使用可變類型

      def saver(x=[]): x.append(1) print(x) saver([2]) #[2,1] saver() #[1] saver() #[1,1] saver() #[1,1,1]

      1

      2

      3

      4

      5

      6

      7

      8

      正確做法:

      def saver(x=None): if x is None: x=[] x.append(1) print(x) saver([2]) #[2,1] saver() #[1] saver() #[1]

      1

      2

      3

      4

      5

      6

      7

      8

      22.

      不正確的使用類變量

      方法順序解析MRO

      class A(object): x=1 class B(A): pass class C(A): pass print A.x,B.x,C.x #1,1,1 B.x=2 print A.x,B.x,C.X #1,2,1 A.x=3 print A.x,B.x,C.x #3,2,3

      1

      2

      3

      4

      5

      6

      7

      8

      9

      23.將字符串?dāng)?shù)字轉(zhuǎn)為數(shù)字型,直接int(str)即可。

      24.注意

      printf是自動(dòng)帶換行的(很容易忘記這點(diǎn)),

      另外input默認(rèn)輸入為字符串,如果要用成數(shù)字可以用int(str)等進(jìn)行轉(zhuǎn)換

      如:輸入" 0 1 2 3 …Length-1"

      ans = [i for i in range(0, Length)] for j in range(len(ans)+1): if j == 0: print(" ",end = " ") else: if j == Length: print("%d"%(j - 1)) else: print("%d"%(j - 1),end = " ")

      1

      2

      3

      4

      5

      6

      7

      8

      9

      官方文檔:format會(huì)代替%,所以多用format。

      25.創(chuàng)建一個(gè)集合:

      可以使用大括號(hào) { } 或者 set() 函數(shù)創(chuàng)建集合,

      注意:創(chuàng)建一個(gè)空集合必須用 set() 而不是 { },因?yàn)?{ } 是用來創(chuàng)建一個(gè)空字典。

      N1 = {1, 'A', 2, 3, 4, 4, 4} print(N1) # {1, 2, 3, 4, 'A'}

      1

      2

      26.元組的索引,有一種是兩個(gè)雙引號(hào)的,最后數(shù)字代表步長(zhǎng):

      sentence = '''andyguo happy''' sentence1 = '''aaaabbbb''' s1 = sentence[1:6:2] # 步長(zhǎng)為2,nyu s2 = sentence[:] # 所有元素 print(s1) print(s2)

      1

      2

      3

      4

      5

      6

      27.find用于查找字符串的子串

      find(substr, beg=0, end=len(string)):

      在[beg, end]范圍內(nèi)查找substring,找到返回substr的起始下標(biāo),否則返回 -1。

      string = 'Hello Python' print(string.find('h', 0, len(string))) # 輸出 9 print(string.find('thon') # 輸出 8 print(strin.find('thon', 9, len(string)) # 輸出 -1

      1

      2

      3

      4

      28.可以通過setdefault()對(duì)空字典進(jìn)行賦值:

      # 字典賦值:setdefault() d=dict() #產(chǎn)生空字典 D={} #產(chǎn)生空字典 d.setdefault('a',0) D.setdefault('b',[1,2,3,4,5]) print(d) print(D) # {'a': 0} # {'b': [1, 2, 3, 4, 5]}

      1

      2

      3

      4

      5

      6

      7

      8

      9

      二、面向?qū)ο驩OP

      (1)類的成員函數(shù)參數(shù)第一個(gè)記得加上self,類中的成員變量記得前面加上self.

      (2)如果父類有子類則記得有(object),如果沒有子類則括號(hào)都沒;

      (3)主函數(shù)開頭記得有if __name__ == '__main__':

      (4)盡量少使用全局變量,如果要用則簡(jiǎn)單是寫在同個(gè)項(xiàng)目的另一個(gè)文件(如文件名為globalvar)中,在主程序開頭記得import globalvar as gl,也可以不寫gl用其他名;

      (5)除非從事底層開發(fā),否則很少使用繼承(子類重寫方法后有錯(cuò)不好查)

      類的4種關(guān)系:繼承、實(shí)例化、組合、認(rèn)識(shí)

      (6)

      三、算法題

      第一題

      編寫一個(gè)類Cpeople(人的姓名str、年齡str、性別bool、工號(hào)int),依次從鍵盤或文件上輸入每個(gè)人的如上信息。遍歷輸出所有男性員工信息;按年齡為序輸出所有員工,同年齡則以工號(hào)升序?yàn)樾?/p>

      存儲(chǔ)Cpeople類對(duì)象的數(shù)據(jù)結(jié)構(gòu)用list或dict

      注意:輸出要列對(duì)齊

      #!/usr/bin/python2 ## -*- coding: utf-8 -*- import functools import re class CPerson: def __init__(self,name,age,sex,number): self.name=name self.age=age self.sex=sex self.number=number def MyCmp(self,other): if self.age>other.age: return 1 elif self.age==other.age: if self.number

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      結(jié)果為:

      請(qǐng)輸入人數(shù):2 請(qǐng)輸入個(gè)人信息:andy 11 男 666 男員工: 姓名:andy 年齡: 11 性別: 男 工號(hào): 666 請(qǐng)輸入個(gè)人信息:luo 22 男 007 男員工: 姓名:luo 年齡: 22 性別: 男 工號(hào): 007 ----------------- 所有的員工信息如下: 姓名:andy 11 男 666 姓名:luo 22 男 007

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      第二題

      加密四位整數(shù),規(guī)則如下:每位數(shù)字加5,用和除以10的余數(shù)代替該位的數(shù)字,再將第一位和第四位交換,第二位和第三位交換

      #!/usr/bin/python ## -*- coding: utf-8 -*- def encode(a): c = [] for i in range(4): c.append(int(a[i])) for j in range(4): c[j] = (c[j] + 5) % 10 c[0], c[3] = c[3], c[0] c[1], c[2] = c[2], c[1] #print(c) for k in range(4): print(c[k], end='') a = input("請(qǐng)輸入四位數(shù):") print("一開始的數(shù)字:",a) #print(type(a)) print("加密后的數(shù)字:") encode(a)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      第三題

      在鍵盤上,左手每隔2秒按下一個(gè)子母鍵盤(依次A-Z),右手每隔5秒按下一個(gè)數(shù)字鍵(0-9),模擬求按下第100個(gè)鍵是哪個(gè)手,哪個(gè)鍵。

      #!/usr/bin/python ## -*- coding: utf-8 -*- BigZ=[chr(i) for i in range(65, 91)]#大寫字母A-Z Num=[int(i) for i in range(0,9)]#數(shù)字0-9 time=0 num1=0 num2=0 flag=0 while(1): global ans #每次遍歷為1s flag=flag+1 if(time%2==0): num1=num1+1 if(flag==100): ans='left' break if(time%5==0): num2=num2+1 if(flag==100): ans='right' break print(ans) if(ans=='left'): a=BigZ[num1%26] print(a) if(ans=='right'): a=Num[num2%10] print(a)

      1

      2

      3

      4

      5

      6

      7

      8

      【python】每天一個(gè)小練習(xí)

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      Python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel函數(shù)中Round數(shù)字取整怎么使用
      下一篇:表格中的斜線怎么弄 一分為二怎么打字(表格中的斜線怎么弄 一分為三怎么打字)
      相關(guān)文章
      亚洲国产一二三精品无码| 国产精品亚洲四区在线观看 | 亚洲激情黄色小说| 亚洲午夜久久久久妓女影院| 久久久久亚洲精品无码网址 | 亚洲a∨无码男人的天堂| 亚洲国产中文在线视频| 亚洲国产成人九九综合| 亚洲中文字幕久在线| 久久久久se色偷偷亚洲精品av | 亚洲小说区图片区| 亚洲一区二区影视| 亚洲国产最大av| 一本天堂ⅴ无码亚洲道久久| 亚洲日韩一区二区三区| 亚洲AV无码专区亚洲AV桃| 香蕉视频亚洲一级| 国产av无码专区亚洲国产精品| 亚洲综合色成在线播放| 亚洲人成色77777| 亚洲午夜久久久影院伊人| 亚洲av永久无码精品秋霞电影影院| 亚洲国产精品无码专区在线观看 | 亚洲第一页在线播放| 亚洲成a人片在线观| 国产成人精品亚洲日本在线 | 亚洲精品无码专区久久久| 亚洲精品无码不卡在线播HE | 亚洲国产国产综合一区首页| 99ri精品国产亚洲| 亚洲中文无码线在线观看| 国产AV旡码专区亚洲AV苍井空| 亚洲欧美日韩中文字幕一区二区三区 | 性xxxx黑人与亚洲| 亚洲国产成人AV在线播放| 亚洲国产精品专区在线观看| 亚洲午夜久久久影院伊人| 911精品国产亚洲日本美国韩国| 亚洲免费中文字幕| 国产精品亚洲av色欲三区| 久久乐国产精品亚洲综合|