日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python 等号报错_Python学习----Python基础

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 等号报错_Python学习----Python基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python基礎

一、數據類型和變量

1.在Python中,等號=是賦值語句,可以把任意數據類型賦值給變量,同一個變量可以反復賦值,而且可以是不同類型的變量。

例如:

a =520# a是整數print(a)

a ='LOVE'# a變為字符串print(a)

這種變量本身類型不固定的語言稱之為動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配,就會報錯。例如Java是靜態語言,賦值語句如下(// 表示注釋):

inta =520;// a是整數類型變量a ="LOVE";// 錯誤:不能把字符串賦給整型變量

和靜態語言相比,動態語言更靈活,就是這個原因。

2.理解變量在計算機內存中的表示也非常重要。

當我們寫:

a = 'ABC'

時,Python解釋器干了兩件事情:

在內存中創建了一個'ABC'的字符串;

在內存中創建了一個名為a的變量,并把它指向'ABC'。

3.最后解釋一下整數的除法為什么也是精確的。

在Python中,有兩種除法,一種除法是/:

>>>10 / 3

3.3333333333333335

/除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數:

>>>9 / 3

3.0

還有一種除法是//,稱為地板除,兩個整數的除法仍然是整數:

>>> 10 // 3

3

你沒有看錯,整數的地板除//永遠是整數,即使除不盡。要做精確的除法,使用/就可以。

因為//除法只取結果的整數部分,所以Python還提供一個余數運算,可以得到兩個整數相除的余數:

>>>10 % 3

1

無論整數做//除法還是取余數,結果永遠是整數,所以,整數運算結果永遠是精確的。

二、字符串和變量

1.Python的字符串

在最新的Python 3版本中,字符串是以Unicode編碼的,也就是說,Python的字符串支持多語言,例如:

>>>print('可以顯示中文的str')

可以顯示中文的str

對于單個字符的編碼,Python提供了ord()函數獲取字符的整數表示,chr()函數把編碼轉換為對應的字符:

>>>ord('B')66>>> chr(32654)'美'>>>ord('美')32654

由于Python的字符串類型是str,在內存中以Unicode表示,一個字符對應若干個字節。如果要在網絡上傳輸,或者保存到磁盤上,就需要把str變為以字節為單位的bytes。

Python對bytes類型的數據用帶b前綴的單引號或雙引號表示:

x = b'ABC'

要注意區分'ABC'和b'ABC',前者是str,后者雖然內容顯示得和前者一樣,但bytes的每個字符都只占用一個字節。

以Unicode表示的str通過encode()方法可以編碼為指定的bytes,例如:

>>> 'ABC'.encode('ascii')

b'ABC'

>>> '中文'.encode('utf-8')

b'\xe4\xb8\xad\xe6\x96\x87'

>>> '中文'.encode('ascii')

Traceback (most recent call last):

File "", line 1, in

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

純英文的str可以用ASCII編碼為bytes,內容是一樣的,含有中文的str可以用UTF-8編碼為bytes。含有中文的str無法用ASCII編碼,因為中文編碼的范圍超過了ASCII編碼的范圍,Python會報錯。

在bytes中,無法顯示為ASCII字符的字節,用\x##顯示。

反過來,如果我們從網絡或磁盤上讀取了字節流,那么讀到的數據就是bytes。要把bytes變為str,就需要用decode()方法:

>>>b'ABC'.decode('ascii')

'ABC'

>>>b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')

'中文'

要計算str包含多少個字符,可以用len()函數:

>>>len('ABC')

3

>>>len('中文')

2

len()函數計算的是str的字符數,如果換成bytes,len()函數就計算字節數:

>>>len(b'ABC')

3

>>>len(b'\xe4\xb8\xad\xe6\x96\x87')

6

>>>len('中文'.encode('utf-8'))

6

可見,1個中文字符經過UTF-8編碼后通常會占用3個字節,而1個英文字符只占用1個字節。

在操作字符串時,我們經常遇到str和bytes的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。

由于Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3

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

第一行注釋是為了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個注釋;

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

2.格式化

在Python中,采用的格式化方式和C語言是一致的,用%實現,舉例如下:

>>>'Hello, %s' % 'Python'

'Hello, Python'

>>>'Hi, %s, you have $%d.' % ('hadas', 2000000)

'Hi, hadas, you have $2000000.'

你可能猜到了,%運算符就是用來格式化字符串的。在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?占位符,后面就跟幾個變量或者值,順序要對應好。如果只有一個%?,括號可以省略。

常見的占位符有:

%d

整數

%f

浮點數

%s

字符串

%x

十六進制整數

其中,格式化整數和浮點數還可以指定是否補0和整數與小數的位數:

>>>'%2d-%02d'% (3,8)' 3-08'>>>'%.5f'%3.1415926'3.14159'

如果你不太確定應該用什么,%s永遠起作用,它會把任何數據類型轉換為字符串:

>>>'Age: %s. Gender: %s'% (24,False)'Age: 25. Gender: False'

有些時候,字符串里面的%是一個普通字符怎么辦?這個時候就需要轉義,用%%來表示一個%:

>>>'growth rate: %d %%'%200'growth rate: 200 %'

三、使用list和tuple

1.列表list

Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。

當索引超出了范圍時,Python會報一個IndexError錯誤,所以,要確保索引不要越界,記得最后一個元素的索引是len(classmates) - 1。

如果要取最后一個元素,除了計算索引位置外,還可以用-1做索引,直接獲取最后一個元素:

>>>classmates = ['hadas', 'Bob', 'Tracy']

>>>classmates

['hsdas', 'Bob', 'Tracy']

>>>classmates[-1]

'Tracy'

其中,"-"號后面跟的是幾就是倒數第幾個元素。

2.元組tuple

另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改。因為tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就盡量用tuple。

最后來看一個“可變的”tuple:

>>>t = ('w', 'e', ['W', 'E'])

>>>t[2][0] = 'X'

>>>t[2][1] = 'Y'

>>>t

('w', 'e', ['X', 'Y'])

表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list并沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向

'a'

,就不能改成指向

'b'

,指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!

3.條件判斷

這是因為input()返回的數據類型是str,str不能直接和整數比較,必須先把str轉換成整數。Python提供了int()函數來完成這件事情:

s = input('input a integer: ')

age = int(s)

if age >=18:

print('adult')

else:

print('teenager')

4.循環

Python提供一個range()函數,可以生成一個整數序列,再通過list()函數可以轉換為list。比如range(5)生成的序列是從0開始小于5的整數:

>>> list(range(6))

[0, 1, 2, 3, 4, 5]

range(101)就可以生成0-100的整數序列,計算如下:

sum =0forxinrange(101): //這里也可以寫為:for x inlist(range(101))sum = sum + x

print(sum)

5.使用dict和set

dict

通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value,但這個key和指定的value不會出現在dict中:

>>>d.get('James')>>>d.get('James', 100)100

>>>d['James']

Traceback (most recent call last):

File "", line 1, in KeyError: 'James'

注意,dict內部存放的順序和key放入的順序是沒有關系的。

和list比較,dict有以下幾個特點:

查找和插入的速度極快,不會隨著key的增加而增加;

需要占用大量的內存,內存浪費多。

而list相反:

查找和插入的時間隨著元素的增加而增加;

占用空間小,浪費內存很少。

所以,dict是用空間來換取時間的一種方法。

dict可以用在需要高速查找的很多地方,在Python代碼中幾乎無處不在,正確使用dict非常重要,需要牢記的第一條就是dict的key必須是不可變對象。

這是因為dict根據key來計算value的存儲位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的算法稱為哈希算法(Hash)。

要保證hash的正確性,作為key的對象就不能變。在Python中,字符串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key:

>>> key = ['A', 'B', 'C']

>>> d[key]

Traceback (most recent call last):

File "", line 1, in TypeError: unhashable type: 'list'

set

對于不可變對象,比如str,對str進行操作:

>>>a = 'love'

>>>b = a.replace('l', 'L')

>>>b

'Love'

>>>a

'love'

雖然

字符串有個

replace()

方法,也確實變出了

'Abc'

,但變量

a

最后仍是'abc',要始終牢記的是,a是變量,而'abc'才是字符串對象!對象a的內容是'abc',但其實是指,a本身是一個變量,它指向的對象的內容才是'abc'。

當我們調用a.replace('a', 'A')時,實際上調用方法replace是作用在字符串對象'abc'上的,而這個方法雖然名字叫replace,但卻沒有改變字符串'abc'的內容。相反,replace方法創建了一個新字符串'Abc'并返回,如果我們用變量b指向該新字符串,就容易理解了,變量a仍指向原有的字符串'abc',但變量b卻指向新字符串'Abc'了。

所以,對于不變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容。相反,這些方法會創建新的對象并返回,這樣,就保證了不可變對象本身永遠是不可變的。

總結

以上是生活随笔為你收集整理的python 等号报错_Python学习----Python基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。