天天看點

基于jupyter notebook的python學習(二)python基礎知識學習

1. 注釋方式

Python有單行和多行的注釋方式,其實本質都是一樣的,都是和linux一樣,通過在一行的最前加上#号來實作的。Python的單行注釋是手動在一行前加上#, 多行注釋是選中需要注釋掉的行号後同時按住Ctrl鍵和/鍵(shift旁邊的鍵)自動為選中的每一行都增加#來進行注釋的。

2. print列印

由于在Python中一切皆對象,故print能列印是以資料,包括數字、字元串、元組、字典等。print(X), X表示可以作為一個整體的所有東東。print的一些常見用法和其他語言類似,但是格式化輸入需要注意的%表示轉換說明符的開始,其後必須要加(),表示需要轉換的内容,因為其後還可以通過‘,’增加其他輸出内容。其次,對于字元串來說,print可以使用‘,’和+号兩種,‘,’号表示通過print把列印内容連接配接起來,故會自動加上空格,+号表示先進行字元串的拼接,把他們倆作為一個整體然後傳遞給print,字元串是通過+号放一起的,故遵循加号的原則,不會修改字元串的。如果想使用+号将其他類型的對象和字元串拼接起來,則需要使用str将其他對象轉換成字元串對象。

i = 2
name = 'get one`s name'
nlen = len(name)
get = 'python'
print('input str is %s lens is %d' % (name, nlen), get)
print(name, get)
print(name+get)
print(str(i)+name)
result:
input str is get one`s name lens is 14 python
get one`s name python
get one`s namepython
2get one`s name
           

每次調用print都會預設換行,這是因為通過help檢視print的定義是:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
      

是以如果想要把一個list中的内容列印在一行,則需要在print的參數中加入空字元或者空格符‘end = ' '’,以替換預設的換行符‘\n’

for i in range(4):
    print(i, j, end = ' ')	
result:
0 1 2 3
           

3. 标準操作符

Python的标準操作符與C語言大部分類似,C語言中用\表示取整,Python則用//來表示,相對于前者更容易了解。邏輯運算符不再采用&& || !來表示,而是采用英文and or not。除此之外,Python還新增了幾種新的操作符,比如用a**b表示a的b次幂,is /not is, in/not in來進行身份判别。is表示2兩端的對象是否相同,并不一定表示他們指向的是同一塊記憶體(記憶體可以通過id()程序檢視)。進行比較的時候會先比較兩端的資料類型,然後比較内容,比如數字51和字元‘3’傳回false,0x4和0o4傳回true。in表示的是左端的對象是否在右端中,需要兩端都是可疊代的才能進行比較。

a = 'mynameis'
b = 'mynameis'
i = 51; j = 5122
L1 = [1,2,3,[4,5]]
L2 = [4,5]
print(a in b)
print(L2 in L1)
print(i in j)
result:
True
True

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-93-6d5c95cbf442> in <module>()
      6 print(a in b)
      7 print(L2 in L1)
----> 8 print(i in j)

TypeError: argument of type 'int' is not iterable
           

4. 指派語句。

感覺Python的指派語句很神奇,功能很強大,不廢話了,舉個栗子:

a,b,c= 3,5,7
print('a = %d b = %d c = %d'%(a,b,c))
a,b,c=c,a,b
print('a = %d b = %d c = %d'%(a,b,c))
result:
a = 3 b = 5 c = 7
a = 7 b = 3 c = 5
           

5. Python的自帶電池,無他,需記憶與經常練習

檢視: dir(__builtins__)

IO:print(), open(), input()

清單與幫助:dir()與help()

類型與身份:type(),id(),memoryview(),isinstance(), issubclass(),

數學運算類:sum,pow,round,min,max,hash等

類型轉換:int,bin,hex,oct,str,float,list,bytes等

序列: len(), range(), zip(), map(),reduce(),filter(), reversed() , sorted(), enumerate()

6. 字元串功能練習

(1)判斷輸入的字元串是否是回文

method 1:
x = input("input string: ")
y = x[::-1]
if x == y:
    print('huiwen')
else:
    print('not huiwen')	

method 2:
x = input("input string: ")
if x == ''.join(reversed(x)):
    print('huiwen')
else:
    print('not huiwen')
           

(2)字元串in與str.index功能講解

s = 'nnot a bad badd'
print('bad' in s)
print('not' in s)
print(s.index('bad'))
print(s.index('not'))
result:
True
True
7
1
           

字元串中的最小單元是字元,in是按照查找對象中的最小單元來查找的。字元串中的in功能找的是給定的字元串,不一定是獨立的單詞,也可能是單詞的一部分,如果想找指定單詞的話需要在前面和後面加上空格,但是還需要考慮單詞是是第一個或者最後一次及單詞前後是否有符号。

index功能傳回的是第一個完全比對要查找的字元串中第一個字元的位置,如例子中,‘bad’與‘badd’均可以比對‘bad’,但是傳回的是‘bad’中字元‘b’的索引。

(3)str.join功能練習

help(str.join)
 join(...)
 |      S.join(iterable) -> str
 |      
 |      Return a string which is the concatenation of the strings in the
 |      iterable.  The separator between elements is S.
           

s = 'nnot badd't = ('1', '2', '3')l = ['1', '2','3']se = {'1', '2', '3'}d1={'name':'jack','age':24}print(s.join('123'))print(s.join(t))print(s.join(l))print(s.join(se))print(s.join(d1))print(s.join(d1.values))reslut:1nnot badd2nnot badd31nnot badd2nnot badd31nnot badd2nnot badd32nnot badd3nnot badd1namennot baddageTypeError Traceback (most recent call last)<ipython-input-25-a89f235e1361> in <module>() 8 print(s.join(l)) 9 print(s.join(se))---> 10 print(s.join(d1.values))TypeError: can only join an iterable

首先通過help指令可以檢視到join的解釋,說明傳回的是由傳入的iterable組成的被連接配接起來的一個字元串,該字元串的分割符是前面的字元串S。通過指令操作可以發現iterable可以是字元串或者内容是字元串的元組、清單或者字典等可疊代對象,當iterable時字典時,參與join的是字典的keys而不是values。

雜記:Python不支援++或者--操作

        相較于C語言的條件?true 操作:false 操作的三元操作,Python變成了 true操作 if 條件 else false操作

        Python中正無窮用float('inf')表示,負無窮用float(‘-inf’)表示, 正無窮與負無窮相加會傳回nan,表示not a number。并且nan不等于nan。

a = float('nan')
b = float('nan')
print(a == b)
False