<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python面試題一

      基礎部分

      1.列出 5 個常用 Python 標準庫?

      os:提供了不少與操作系統相關聯的函數

      sys: 通常用于命令行參數

      re: 正則匹配

      math: 數學運算

      datetime: 處理日期時間

      2.Python 內建數據類型有哪些?

      int、bool、 str、 list、 tuple、 dict

      3.簡述 with 方法打開處理文件幫我我們做了什么?

      打開文件在進行讀寫的時候可能會出現一些異常狀況,如果按照常規的f.open

      寫法,我們需要try,except,finally,做異常判斷,并且文件最終不管遇到什么情況,都要執行finally f.close()關閉文件,with方法幫我們實現了finally中f.close

      (當然還有其他自定義功能,有興趣可以研究with方法源碼)

      4.列出 Python 中可變數據類型和不可變數據類型,為什么?

      (1)可變類型(mutable):變量進行append、+=等這種操作后 == 改變了變量的值,而不會新建一個對象,變量引用的對象的地址也不會變化,不過對于相同的值的不同對象,在內存中則會存在不同的對象,即每個對象都有自己的地址,相當于內存中對于同值的對象保存了多份,這里不存在引用計數,是實實在在的對象。

      • list
      • dict
      • set
      • bytearray
      • user-defined classes (除非是特別定義的不可變)

      (2)不可變類型(immutable):改變了變量的值 == 新建了一個對象,而對于相同的值的對象,在內存中則只有一個對象(一個地址), python的id() 方法讓你明白

      • int
      • float
      • decimal
      • complex
      • bool
      • string
      • tuple
      • range
      • frozenset
      • bytes

      例子:

      ``` # -- coding: utf-8 --

      # 不可變類型 a = 3 b = 3 print(id(a)) print(id(b))

      # 可變類型 c = [1,2,3] d = [1,2,3] print(id(c)) print(id(d)) ```

      5.Python 獲取當前日期?

      print(datetime.datetime.now())

      6.統計字符串每個字符出現的次數

      # -*- coding: utf-8 -*-

       

      str = 'taodejintaodejinjjdsinad'

      result = {}

      for i in str:

          result[i] = str.count(i)

      print(result)

      7.用 python 刪除文件和用 linux 命令刪除文件方法

      python:os.remove(文件名)

      linux: rm 文件名

      8.寫一段自定義異常代碼

      # -*- coding: utf-8 -*-

       

      # 自定義異常 需要繼承Exception

      class MyException(Exception):

          def __init__(self,*args):

              self.args = args

       

      # 先定義異常基類,然后派生不同類型的異常

      class loginError(MyException):

          def __init__(self,code =100, message = '登錄異常',args = ('登錄異常',)):

              self.args = args

              self.message = message

              self.code = code

       

       

      class loginountError(MyException):

          def __init__(self):

              self.args = ('退出異常',)

              self.message = '退出異常'

              self.code = 200

       

       

      try:

          raise loginountError()

      except loginountError as e:

          print(e)

          print(e.code)

          print(e.message)

      9.舉例說明異常模塊中 try except else finally 的相關意義

      try..except..else沒有捕獲到異常,執行else語句

      try..except..finally不管是否捕獲到異常,都執行finally語句

       

      10.遇到 bug 如何處理

      百度,問人

      語言特性

      1.談談對 Python 和其他語言的區別

      三個方面:

      語言特點: 簡潔優雅,省略了各種大括號和分號,還有一些關鍵字,類型說明

      語言類型: 解釋型語言,運行的時候是一行一行的解釋并運行,所以調試代碼很方便,開發效率高

      第三方庫: python是開源的,并且python的定位時任由其發展,應用領域很多比如Web,運維,自動化測試,爬蟲,數據分析,人工智能.Python具有非常完備的第三方庫

      一句話概括:Python是一門語法簡潔優美,功能強大無比,應用領域非常廣泛,具有強大完備的第三方庫的一門弱類型的可移植,可擴展,可嵌入的解釋型編程語言

      2.簡述解釋型和編譯型編程語言

      解釋型:就是邊解釋邊執行 編譯性:編譯后再執行

      3.Python 的解釋器種類以及相關特點?

      CPython

      由C語言開發的 使用最廣的解釋器,在命名行下運行python,就是啟動CPython解釋器.

      IPython

      基于cpython之上的一個交互式計時器 交互方式增強 功能和cpython一樣

      PyPy

      目標是執行效率 采用JIT技術 對python代碼進行動態編譯,提高執行效率

      JPython

      運行在Java上的解釋器 直接把python代碼編譯成Java字節碼執行

      IronPython

      在微軟 .NET 平臺上的解釋器,把python編譯成. NET 的字節碼

      4.說說你知道的Python3 和 Python2 之間的區別?

      • print

      py2:print語句,語句就意味著可以直接跟要打印的東西,如果后面接的是一個元組對象,直接打印

      py3:print函數,函數就以為這必須要加上括號才能調用,如果接元組對象,可以接收多個位置參數,并可以打印

      如果希望在 Python2 中 把 print 當函數使用,那么可以導入 future 模塊 中的 print_function

      下面有個示例:

      # py2

      >>> print("hello", "world")

      ('hello', 'world')

      # py3

      >>> print("hello", "world")

      hello world

      # py2

      >>> print("hello", "world")

      ('hello', 'world')

      >>> from __future__ import print_function

      >>> print("hello", "world")

      hello world

      • 輸入函數

      py2:input_raw()

      py3:input()

      • 在使用super()的不同

      py2:必須顯示的在參數中寫上基類

      py:直接無參數調用即可

      • 1/2的結果

      py2:返回0

      py3:返回0.5,沒有了int和long的區別

      • 編碼

      py2:默認編碼ascii

      py3:默認編碼utf-8

      而且為了在py2中使用中文,在頭部引入coding聲明,不推薦使用

      • 字符串

      py2:unicode類型表示字符串序列,str類型表示字節序列

      py3::str類型表示字符串序列,byte類型表示字節序列

      • True和False

      py2:True 和 False 在 Python2 中是兩個全局變量,可以為其賦值或者進行別的操作,初始數值分別為1和0,雖然修改是違背了python設計的原則,但是確實可以更改

      py3:修正了這個變量,讓True或False不可變

      • 迭代器

      py2:當中許多返回列表的方法,如range,字典對象的 dict.keys()、dict.values() 方法, map、filter、zip;并且迭代器必須實現next方法

      py3:將返回列表的方法改為了返回迭代器對象,內置了next,不用特意去實現next

      • nonlocal

      py2:沒有辦法在嵌套函數中將變量聲明為一個非局部變量,只能在函數中聲明全局變量

      py3:nonlocal方法實現了,示例如下:

      def func():

       c = 1

          def foo():

              c = 12

          foo()

          print(c)

      func()    #1

      def func():

          c = 1

          def foo():

              nonlocal c

              c = 12

          foo()

          print(c)

      func()   # 12

       

      5.Python3 和 Python2 中 int 和 long 區別?

      python2中有long類型 python3中沒有long類型,只有int類型

       

      6.xrange 和 range 的區別?

      兩種用法介紹如下: 1.range([start], stop[, step]) 返回等差數列。構建等差數列,起點是start,終點是stop,但不包含stop,公差是step。 start和step是可選項,沒給出start時,從0開始;沒給出step時,默認公差為1。 例如:

      >>> range(10)                             #起點是0,終點是10,但是不包括10

      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

      >>> range(1,10)                           #起點是1,終點是10,但是不包括10

      [1, 2, 3, 4, 5, 6, 7, 8, 9]

      >>> range(1,10,2)                         #起點是1,終點是10,步長為2

      [1, 3, 5, 7, 9]

      >>> range(0,-10,-1)                       #起點是1,終點是10,步長為-1

      [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

      >>> range(0,-10,1)                        #起點是0,終點是-10,終點為負數時,步長只能為負數,否則返回空

      []

      >>> range(0)                              #起點是0,返回空列表

      []

      >>> range(1,0)                            #起點大于終點,返回空列表

      []

      2.xrange([start], stop[, step]) xrange與range類似,只是返回的是一個"xrange object"對象,而非數組list。 要生成很大的數字序列的時候,用xrange會比range性能優很多,因為不需要一上來就開辟一塊很大的內存空間。 例如:

       

      >>> lst = xrange(1,10)

      >>> lst

      xrange(1, 10)

      >>> type(lst)

      <type 'xrange'>

      >>> list(lst)

      [1, 2, 3, 4, 5, 6, 7, 8, 9]

       

      區別如下: 1.range和xrange都是在循環中使用,輸出結果一樣。 2.range返回的是一個list對象,而xrange返回的是一個生成器對象(xrange object)。 3.xrange則不會直接生成一個list,而是每次調用返回其中的一個值,內存空間使用極少,因而性能非常好。

       

      編碼規范

      7.什么是 PEP8?

      《Python Enhancement Proposal #8》又稱之為Python 代碼格式而編訂的風格指南

      8.了解 Python 之禪么?

      Beautiful is better than ugly.

      # 優美勝于丑陋(Python以編寫優美的代碼為目標)

       

      Explicit is better than implicit.

      # 明了勝于晦澀(優美的代碼應當是明了的,命名規范,風格相似)

       

      Simple is better than complex.

      # 簡潔勝于復雜(優美的代碼應當是簡潔的,不要有復雜的內部實現)

       

      Complex is better than complicated.

      # 復雜勝于凌亂(如果復雜不可避免,那代碼間也不能有難懂的關系,要保持接口簡潔)

       

      Flat is better than nested.

      # 扁平勝于嵌套(優美的代碼應當是扁平的,不能有太多的嵌套)

       

      Sparse is better than dense.

      # 間隔勝于緊湊(優美的代碼有適當的間隔,不要奢望一行代碼解決問題)

       

      Readability counts.

      # 可讀性很重要(優美的代碼是可讀的)

       

      Special cases aren't special enough to ``break` `the rules.

      Although practicality beats purity.

      # 即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)

       

      Errors should never pass silently.

      Unless explicitly silenced.

      # 不要包容所有錯誤,除非你確定需要這樣做(精準地捕獲異常,不寫except:pass風格的代碼)

       

      In the face of ambiguity, refuse the temptation to guess.

      # 當存在多種可能,不要嘗試去猜測

       

      There should be one-- ``and` `preferably only one --obvious way to ``do` `it.

      # 而是盡量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法

       

      Although that way may not be obvious at first unless you're Dutch.

      # 雖然這并不容易,因為你不是 Python 之父(這里的Dutch是指Guido)

       

      Now is better than never.

      Although never is often better than *right* now.

      # 做也許好過不做,但不假思索就動手還不如不做(動手之前要細思量)

       

      If the implementation is hard to explain, it's a bad idea.

      If the implementation is easy to explain, it may be a good idea.

      # 如果你無法向人描述你的方案,那肯定不是一個好方案;反之亦然(方案測評標準)

       

      Namespaces are one honking great idea -- let's ``do` `more of those!

      # 命名空間是一種絕妙的理念,我們應當多加利用(倡導與號召)

      開交互界面 輸入import this 回車就OK了。

      9.了解 docstring 么?

      DocStrings 文檔字符串是一個重要工具,用于解釋文檔程序,其實就是對程序方法的一些說明信息。我們可以在函數體的第一行使用一對三個單引號"或者一對三個雙引號""" 來定義文檔字符串。

      你可以使用函數名.__doc__

      "(注意雙下劃線)調用函數中的文檔字符串屬性。DocStrings 文檔字符串使用慣例:它的首行簡述函數功能。

       

      簡單來說,就是出現在模塊、函數、類、方法里第一個語句的,就是docstring。會自動變成屬性doc

      def foo():    

      """ This is function foo"""

      可通過foo.__doc__訪問得到’ This is function foo’.

       

      10.了解類型注解么?

      類型注解介紹 我們知道 Python 是一種動態語言,變量以及函數的參數是不區分類型。 Python解釋器會在運行的時候動態判斷變量和參數的類型,這樣的好處是編寫代碼速度很快,很靈活,但是壞處也很明顯,不好維護,可能代碼寫過一段時間重新看就很難理解了,因為那些變量、參數、函數返回值的類型,全都給忘記了。 而且當你在讀別人的代碼的時候,也無法一眼看出變量或者參數的類型,經常要自己推敲,這樣給學習帶來了很大的障礙。 所以Python3里有了這個新特性,可以給參數、函數返回值和變量的類型加上注解,不過這個僅僅是注釋而已,對代碼的運行來說沒有任何影響,變量的真正類型還是會有Python解釋器來確定,你所做的只是在提高代碼的可讀性,僅此而已。

      def add(x: int, y: int) -> int:

          return x + y

       

      沒用過類型注解(Type Annotations)的同學可能咋一看有點迷糊,其實上面這段代碼和下面這個代碼是一樣的。

      def add(x, y):

          return x + y

      11.例舉你知道 Python 對象的命名規范,例如方法或者類等

      module_name, 模塊

      package_name, 包

      ClassName, 類

      method_name, 方法

      ExceptionName, 異常

      function_name, 函數

      GLOBAL_VAR_NAME, 全局變量

      instance_var_name, 實例

      function_parameter_name, 參數

      local_var_name. 本變量

      12.Python 中的注釋有幾種?

      1.python單行注釋符號(#)

      2.批量、多行注釋符號。多行注釋是用三引號''' '''包含的

      3.對于函數還有文檔注釋

      為函數添加文檔注釋,需要在函數頭(包含def關鍵字的那一行)的下一行用一對單引號或雙引號將注釋括起來。

      13.如何優雅的給一個函數加注釋?

      見12文檔注釋

      def add (x,y):

          "計算兩個數的和"

          return x + y

       

      print(add.__doc__)

      #輸出結果:計算兩個數的和

      14.如何給變量加注釋?

      變量的聲明同一行加上#的注釋

      15.Python 代碼縮進中是否支持 Tab 鍵和空格混用。

      在Python中,官方推薦使用4個空格作為縮進,而不是使用Tab鍵。不過,實際上你可以在你的代碼中混用Tab和空格,但這可能會導致一些混亂,尤其是在跨不同編輯器或者查看代碼時。

      如果你想確保你的代碼中只使用空格作為縮進,你可以在你的編輯器中設置將Tab自動轉換為相應數量的空格。大多數現代編輯器和IDE都支持這種設置。

      以下是一個Python代碼示例,它混用了Tab和空格作為縮進:

      def hello_world():

      print("Hello")  # 使用了Tab作為縮進

      print("World")  # 使用了4個空格作為縮進

      盡管這樣的代碼是可以運行的,但最好還是遵循一種縮進風格,并在你的編輯器或IDE中設置對應的規則。

      16.是否可以在一句 import 中導入多個庫?

      支持,但是不推薦。

      因為一次導入多個模塊可讀性不是很好,所以一行導入一個模塊會比較好。同樣的盡量少用 from modulename import *,因為判斷某個函數或者屬性的來源有些困難,不方便調試,可讀性也降低了。

      17.在給 Py 文件命名的時候需要注意什么?

      1.模塊名和包名采用小寫字母并且以下劃線分隔單詞的形式; 如:regex_syntax,py_compile,_winreg

      2.類名或異常名采用每個單詞首字母大寫的方式; 如:BaseServer,ForkingMixIn,KeyboardInterrupt

      3.全局或者類常量,全部使用大寫字母,并且以下劃線分隔單詞; 如:MAX_LOAD

      4.其余變量命名包括方法名,函數名,普通變量名則是采用全部小寫字母,并且以下劃線分隔單詞的形式命名。 如:my_thread

      5.以上的內容如果是內部的,則使用下劃線開頭命名。 如:init,new

      18.例舉幾個規范 Python 代碼風格的工具

      PyCharm,vscode

      數據類型

      19.列舉 Python 中的基本數據類型?

      Python 語言中包含以下幾種基本數據類型:

      1. int (整數):可以是正數、零或負數。例如,1, -1, 0。
      2. float (浮點數):浮點數是一個數字,包含一個小數點。例如,1.23, -0.12。
      3. bool (布爾):布爾數據類型通常用于比較和邏輯運算,只有兩個值:True 或 False。
      4. str (字符串):字符串是字符的序列,可以是引號內的任何文本。例如,'Hello', "World"。
      5. list (列表):列表是一個順序存儲多個值的集合,可以修改。例如,[1, 2, 3]。
      6. tuple (元組):元組與列表類似,但是不可變。例如,(1, 2, 3)。
      7. dict (字典):字典是一個無序的鍵-值對集合。例如,{'name': 'Alice', 'age': 25}。

      20.如何區別可變數據類型和不可變數據類型

      可變數據類型:在id不變的情況下,value可改變(列表和字典是可變類型,但是字典中的key值必須是不可變類型)

      不可變數據類型:value改變,id也跟著改變。(數字,字符串,布爾類型,都是不可類型)

      21.將"hello world"轉換為首字母大寫"Hello World"

      str = 'hello,world'

      a = str.title()

      print(a)

      22.如何檢測字符串中只含有數字?

      a = '12121212'.isdigit()

      print(a)

      b = 'dsa1212121'.isdigit()

      print(b)

      23.將字符串"ilovechina"進行反轉

      s1 ='ilovechina'[: :-1]

      print(s1)

      24.Python 中的字符串格式化方式你知道哪些?

      1、最傳統的用%格式化字符串

      “Hello, %s. You are %s.” % (name, age)

      2、string.format ()

      “Hello,{}. You are {}”.format(name,age)

      3、f-string python3.6誕生的新方法

      該方法叫做“F字符串方法”,又稱為“格式化字符串文字”。F字符串是開頭有一個f的字符串文字,以及包含表達式的大括號將被其值替換。表達式在運行時進行渲染,然后使用format協議進行格式化。

      f’his name is {name}’

      25.有一個字符串開頭和末尾都有空格,比如“ adabdw ”,要求寫一個函數把這個字符串的前后空格都去掉。

      a = ' asdf '

      b = a.replace(' ','')

      print(a)

      print(b)

      26.獲取字符串”123456“最后的兩個字符。

      #獲取字符串最后兩個字符

      def getLastTwo(s):

          return s[-2:]

      27.一個編碼為 GBK 的字符串 ,要將其轉成 UTF-8 編碼的字符串,應如何操作?

      str.encode("GBK") str.encode("UTF-8")

       

       

      (1)、s="info:xiaoZhang 33 shandong",用正則切分字符串輸出['info', 'xiaoZhang', '33', 'shandong']
      ```
      -- coding: utf-8 --
      import re

      s="info:xiaoZhang 33 shandong"
      def reStr1(s): return re.split(r'[\s\:\:]+', s)
      print(reStr1(s)) ```

      (2)、a = "你好 中國 ",去除多余空格只留一個空格。

      (3)、怎樣將字符串轉換為小寫

      s2.upper()

      29.單引號、雙引號、三引號的區別?

      (1)單引號和雙引號平時使用時候,是沒有太多區別的。但是在定義字符串時候,可以單雙引號混用來避免轉義問題。

      (2)三引號作用:

      -可以作為格式化輸出

      -可以作為多行注釋

      列表

      30.已知 AList = [1,2,3,1,2],對 AList 列表元素去重,寫出具體過程。

      list(set(list)) --先將列表轉化為set,再轉化為list就可以實現去重操作

      31.如何實現 "1,2,3" 變成 ["1","2","3"]

      str = "1,2,3"

      print(str.split(","))

      32.給定兩個 list,A 和 B,找出相同元素和不同元素

      利用集合:

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

      B=[1,3,5,7,9]

      print('A、B中相同元素:')

      print(set(A)&set(B))

      print('A、B中不同元素:')

      print(set(A)^set(B))

      33.[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]

      l1 = [[1,2],[3,4],[5,6]] l = [j for t in l1 for j in t]

      34.合并列表[1,5,7,9]和[2,2,6,8]

      a1 = [1,5,7,9]

      a2 = [2,2,6,8]

      print(a1+a2)

      35.如何打亂一個列表的元素?

      import random

      l = [1,2,3,4,5,6]

      random.shuffle(l)

      print(l)

      字典

      36.字典操作中 del 和 pop 有什么區別?

      del 可以刪除指定key的鍵值對,并且沒有返回。用法:del dict[key]; 也可以使用del來清空整個字典 pop是從字典中取走指定key的鍵值對,并且返回鍵值。是字典的一個方法。用法:dict.pop(key)

      37.按照字典的內的數值排序

      dict1={'a':2,'e':3,'f':8,'d':4}

      # 正向排序

      dict2 = sorted(dict1)

      # 反向排序

      dict3 = sorted(dict1,reverse=True)

      print(dict2)

      print(dict3)

      38.請合并下面兩個字典 a = {"A":1,"B":2},b = {"C":3,"D":4}

      def dictMerge1():

          a = {"A":1,"B":2}

          b = {"C":3,"D":4}

          a.update(b)

          print(a)

      dictMerge1()

      39.如何使用生成式的方式生成一個字典,寫一段功能代碼。

      list4 = [('name','zhangsan'),('age',22),('phone',110)]

      # for 循環遍歷列表,將列表中小元組的key和value取出,作為字典中的key:value

      dict_1 = {key:value for key,value in list4}

      print (dict_1)

      40.如何把元組("a","b")和元組(1,2),變為字典{"a":1,"b":2}

      a = ("a","b")

      b = (1,2)

      z = zip(a,b)

      print(dict(z))

      41.Python 常用的數據結構的類型及其特性?

      一、基礎數據類型

        標準數據類型:

          ·不可變數據類型

            Number(數字):int、float、bool、complex(復數)

            String(字符串)

            Tuple(元祖):不可變,無法通過下標來修改值

          ·可變數據類型

            List(列表):[ ]

            Set(集合):{ }

            Dictionary(字典):{ key:value}

        可變數據類型:當值改變時,id編號不變化【可以使用id()函數來查看】

        不可變數據類型:當值改變時,會產生新的id編號

      二、基本數據結構(列表、集合、字典、元祖):

        · 列表(list):

          特點:是一個可變集合,不僅結構可變,里面還可以放不同類型的對象:num = [1,2,3,‘123’,True,321]

           常規操作:

            ·獲取元素:可以通過下標獲取:num[0],輸出:1

                  可以通過切片獲取:num[3:5],輸出:'123',321

            ·添加元素:

              num.append(3):在列表后方添加元素

              num.insert(index,value):插入到列表的指定位置
              num + [1,2,3] 或 num.extend([1,2,3]):連接兩個列表

        ·元祖(tuple)

          特點:不可變

          常規操作:

            ·可以通過下標取值,但無法修改

            ·可以通過 index(value1,value2) 來獲取制定元素在元祖中出現的位置

            ·可以通過count(value) 來統計指定元素在元祖中出現的個數

        ·集合({ })

          特點:集合是一個無序不重復元素的集

          常規操作:

            推導式:

       

      42.如何交換字典 {"A":1,"B":2}的鍵和值?

      mydict={"a":1,"b":2,"c":3}

      mydict_new={}

      for key,val in mydict.items():

          mydict_new[val]=key

      print(mydict_new)

      43.Python 里面如何實現 tuple 和 list 的轉換?

      list(tup) tuple(list)

      44.我們知道對于列表可以使用切片操作進行部分元素的選擇,那么如何對生成器類型的對象實現相同的功能呢?

      這個題目考察了 Python 標準庫的itertools模快的掌握情況,該模塊提供了操作生成器的一些方法。 對于生成器類型我們使用islice方法來實現切片的功能。例子如下

      from itertools import islice

      gen = iter(range(10)) #iter()函數用來生成迭代器

      #第一個參數是迭代器,第二個參數起始索引,第三個參數結束索引,不支持負數索引

      for i in islice(gen,0,4):

          print(i)

      45.請將[i for i in range(3)]改成生成器

      直接將中括號改成小括號就行了

      (i for i in range(3))

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

      a="hello"

      c=a.encode(encoding='utf-8')

      a = b'hello'

       

      b="世界"

      b = b.encode(encoding='utf-8')

       

      print(a,b,c)

      47.下面的代碼輸出結果是什么?

       

       

      48.下面的代碼輸出的結果是什么?

      a = (1,2,3,[4,5,6,7],8)

      # a[2] = 2

      a[3][0] = 2

      print(a)

      (1, 2, 3, [2, 5, 6, 7], 8)

      49.Python 交換兩個變量的值

      a,b =b,a

      50.在讀文件操作的時候會使用 read、readline 或者 readlines,簡述它們各自的作用

      1)read([size])方法從文件當前位置起讀取size個字節,若無參數size,則表示讀取至文件結束為止,輸出的結果是字符串對象

      2)readline():每次讀出一行內容,所以,讀取時占用內存小,比較適合大文件,輸出的結果也是一個字符串對象。

      3)readlines():讀取整個文件所有行,保存在一個列表(list)變量中,每行作為一個元素,但讀取大文件會比較占內存。

      總結:read和readline返回的是字符串,而readlines返回的是列表,其中每行是作為列表的一個元素。

      51.json 序列化時,可以處理的數據類型有哪些?如何定制支持 datetime?

      1、可以處理的數據類型是 string、int、list、tuple、dict、bool、null

      2、自定義時間序列化轉換器

      import json

      from json import JSONEncoder

      from datetime import datetime

      class ComplexEncoder(JSONEncoder):

          def default(self, obj):

              if isinstance(obj, datetime):

                  return obj.strftime('%Y-%m-%d %H:%M:%S')

              else:

                  return super(ComplexEncoder,self).default(obj)

      d = { 'name':'alex','data':datetime.now()}

      print(json.dumps(d,cls=ComplexEncoder))

      # {"name": "alex", "data": "2018-05-18 19:52:05"}

      52.json 序列化時,默認遇到中文會轉換成 unicode,如果想要保留中文怎么辦?

      import json

      a = json.dumps({"ddf":"你好"},ensure_ascii=False)

      b = json.dumps({"ddf":"你好"})

      print(a) #{"ddf": "你好"}

      print(b)

      53.有兩個磁盤文件 A 和 B,各存放一行字母,要求把這兩個文件中的信息合并(按字母順序排列),輸出到一個新文件 C 中。

      # -*- coding: utf-8 -*-

       

      with open("F:/Scrapy_test/test/A") as A:

          content_a = A.read() #用read結果可以對A、B中的字母都排序好,如果用readlines()就只會把A、B整個文件的字母排序

       

      with open("F://Scrapy_test//test//B") as B:

          content_b = B.read()

       

      s = ''.join(sorted(content_a+content_b))

      C = open("F://Scrapy_test//test//C",'w+')

      result = C.write(s)

      A.close()

      B.close()

      C.close()

       

      54.如果當前的日期為 20190530,要求寫一個函數輸出 N 天后的日期,(比如 N 為 2,則輸出 20190601)。

      def toDate(n):

          if type(n) is not int:

              return;

          from datetime import date

          from datetime import timedelta

          date2 = date.today() + timedelta(days=n)

          print(date2.strftime("%Y%m%d"))

       

      toDate(2)

      toDate(29)

      55.寫一個函數,接收整數參數 n,返回一個函數,函數的功能是把函數的參數和 n 相乘并把結果返回。

      def lazy_mul(n):

          def mul(m):

              return m*n

          return mul

      56.下面代碼會存在什么問題,如何改進?

       

      無法編譯通過。 將函數內的str變量換為其他名稱即可

       

      57.一行代碼輸出 1-100 之間的所有偶數。

      print(list(even for even in range(100) if (even%2 == 0 )))

      58.with 語句的作用,寫一段代碼?

      with open(r'c:\test.txt', 'r') as f:

           data = f.read()

      59.python 字典和 json 字符串相互轉化方法

      在Python中自帶json庫。通過import json導入。 在json模塊有2個方法, loads():將json數據轉化成dict數據 dumps():將dict數據轉化成json數據 load():讀取json文件數據,轉成dict數據 dump():將dict數據轉化成json數據后寫入json文件

      60.請寫一個 Python 邏輯,計算一個文件中的大寫字母數量

      import os

      os.chdir(r'F://Scrapy_test//test') #os.chdir切換到指定目錄

      with open('B') as today:

          count=0

          for i in today.read():

              if i.isupper():

                  count+=1

      print(count)

       

      posted @ 2025-02-18 16:11  業余磚家  閱讀(62)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 望奎县| 亚洲第一极品精品无码久久| 色综合中文综合网| 国产精品一区二区麻豆蜜桃| 天堂网亚洲综合在线| 沐川县| 综合色一色综合久久网| 欧美人妻久久精品| 成人免费无遮挡在线播放| 亚洲日本乱码在线观看| 色吊丝一区二区中文字幕| 久久天天躁狠狠躁夜夜2020老熟妇| 美女无遮挡免费视频网站| 亚洲午夜无码久久久久小说| 少妇人妻偷人精品视蜜桃 | 国产又色又爽又黄的在线观看 | 国产综合精品一区二区在线| 在线A级毛片无码免费真人| 久久久av男人的天堂| 午夜久久水蜜桃一区二区| 精品无码人妻一区二区三区| 青青草成人免费自拍视频| 亚洲av无码乱码在线观看野外| 亚洲综合无码一区二区三区不卡| 久久亚洲精品人成综合网| 亚洲国产日韩A在线亚洲| 国内精品久久久久影院网站| 国产精品人成视频免费播放| 精品无人区卡一卡二卡三乱码| 亚洲av鲁丝一区二区三区黄| 亚洲一区二区三区蜜桃臀| 久久99精品久久久久麻豆| 国产边打电话边被躁视频| 中文字幕日韩精品人妻| 樱花草视频www日本韩国| 亚洲熟妇乱色一区二区三区| 国产91特黄特色A级毛片| 老色鬼在线精品视频在线观看| 国产成人一区二区三区免费 | 91中文字幕一区在线| 亚洲综合色婷婷中文字幕|