Python3入門(三)——Python基礎語法


一、基本語法

  1.行和縮進

  Python中,不使用括號來表示代碼的類和函數定義塊或流程控制。

  參考:https://www.w3cschool.cn/python3/python3-basic-operators.html

  官方中文文檔參考:https://docs.python.org/zh-cn/3.7/

  代碼塊是由行縮進,縮進位的數目是可變的,但是在塊中的所有語句必須縮進相同的量。

  如下所示:

a = 100
if a >= 0: print(a) else: print(-a)

  // 同樣的,建議一個tab設置成4個空格(Editor->Code Sytle)

  2.注釋  

  “#”號之后字符和到物理行是注釋的一部分,Python解釋器會忽略它們。

  多行注釋,使用三引號 """ """(單引號亦可)

# First comment
print "Hello, Python!";  # second comment

  3.引號

  Python接受單引號('),雙引號(“)和三(''或”“”)引用,以表示字符串常量,只要是同一類型的引號開始和結束的字符串。

  三重引號可以用於跨越多個行的字符串。例如,所有下列是合法的:

word = 'word' sentence = "This is a sentence." paragraph = """This is a paragraph. It is made up of multiple lines and sentences."""

  4.分號

    和scala一樣,分號是可選的。一般而言可以省略

二、數據類型

  a) 數字

  b) 字符串

  c) 列表

  d) 元組

  e) 字典

  f)   set 

  補充還有布爾值:True和False

  數據類型之間的轉換https://www.cnblogs.com/mywood/p/7428138.html

  python中定義變量時不需要顯示指定變量類型,如果要查看數據類型,可以使用type(var),以下為python中變量使用的典型語法:

#基本使用(連scala中的val都省了,全自動類型推斷)
counter  = 100          # 整型
miles   = 1000.0       # 浮點
name    = "John"      # 字符串

 三、字符串和編碼

  1.字符串

  字符串的API可以參考String Methods

  常用操作,參考:https://www.runoob.com/python/python-strings.html

  在python3中,默認的字符串編碼是Unicode,提供了類似

    ord()——字符的整數表示(例如A:65)

    decode()/encode()——字符串與bytes之間的互轉

    len()——表示字符串長度等常規方法

  取值支持str[1],str[1:8]這樣的區間取值,直接取出某些字符串中的指定位字符。步長也是支持的str[0:5:2]——切片

  同樣,字符串支持for in的迭代!

  字符串格式化與C保持一致:

print("your name is %s,you are %s" % ("Bob", "Good"))

  更加推薦的是format函數https://www.runoob.com/python/att-string-format.html

  2.編碼

  通常在py文件的頭加上以下兩行:來防止亂碼

#!/usr/bin/env python3 # -*- coding: utf-8 -*-

   第一行和shell一樣,告訴liunx系列系統這是一個可執行程序

  第二行則用於指定編碼(當然文件也要指定編碼,這部分在pycharm中也應該設定編碼)

  3.占位符

>>> print('it is %s,i %s it' %('good','like')) it is good,i like it

  和C的占位符類似,不再贅述;相同功能的有format方法:

>>> 'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成績提升了 17.1%'

四、list列表和tuple元組

  1.List列表

    與普通列表list的定義一樣是個可變有序列表,注意python的寫法:中括號[]

>>> list = ['i','love','chnia'] >>> list ['i', 'love', 'chnia']

    訪問使用從0開始的下標訪問,並且支持正負訪問:

>>> list[0] 'i'
>>> list[1] 'love'
>>> list[-1] 'chnia'

    元素的增刪改操作:完整的操作在文檔第五章

    關於循環遍歷刪除的坑,參考:https://www.cnblogs.com/baihualin/p/10698651.html

# 末尾插入元素
>>> list.append('you') >>> list ['i', 'love', 'chnia', 'you'] # 指定位置插入元素
>>> list.insert(1,'really') >>> list ['i', 'really', 'love', 'chnia', 'you'] # 刪除末尾元素
>>> list.pop() 'you'
>>> list ['i', 'really', 'love', 'chnia'] # 刪除指定位置元素,remove刪除指定元素,clear清空列表
>>> list.pop(1) 'really'
>>> list ['i', 'love', 'chnia'] >>>

    list保存的還可以是不同類型的元素:

>>> list = [1,'love',True] >>> list [1, 'love', True] >>>

 list的遍歷:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
if __name__ == '__main__':
    list = ['html', 'js', 'css', 'python']

    # 方法1
    print '遍歷列表方法1:'
    for i in list:
        print ("序號:%s   值:%s" % (list.index(i) + 1, i))

    print '\n遍歷列表方法2:'
    # 方法2
    for i in range(len(list)):
        print ("序號:%s   值:%s" % (i + 1, list[i]))

    # 方法3
    print '\n遍歷列表方法3:'
    for i, val in enumerate(list):
        print ("序號:%s   值:%s" % (i + 1, val))

    # 方法3
    print '\n遍歷列表方法3 (設置遍歷開始初始位置,只改變了起始序號):'
    for i, val in enumerate(list, 2):
        print ("序號:%s   值:%s" % (i + 1, val))

 

   2.tuple元組

    tuple就是不可變的list了,表示上使用括號()

>>> tuple = ('i','love',10086) >>> tuple ('i', 'love', 10086)

  隱式使用tuple可以進行多重賦值:

a,b = 1,2
# 利用隱式tuple可以簡便的交換兩個元素的值
x,y = y,x

   這里為了避免歧義,定義一個元素的元組時,需要在末尾加逗號,,Python在顯示只有一個元素的時候也會加上逗號

>>> tuple1 = (1,)

   訪問和list一樣,使用下標:

    支持zip拉鏈操作:https://www.runoob.com/python/python-func-zip.html

>>> tuple[1] 'love'
>>>

五、條件判斷與循環

  1.條件判斷

  直接從示例看起:注意冒號

age = 20
if age >= 18: print('your age is', age) print('adult')

  根據Python的縮進規則,如果if語句判斷是True,就把縮進的兩行print語句執行了,否則,什么也不做。

  結合else的語法如下:(注意else后的冒號:)

age = 3
if age >= 18: print('adult') elif age >= 6: print('teenager') else: print('kid')

  python也支持:

if x: print('True')

  只要x是非零數值、非空字符串、非空list等,就判斷為True,否則為False

  2.循環

   for

  和scala有點兒類似(當然,Python先於scala出現),同樣注意冒號:

>>> list = [1,'love',True] >>> for e in list: print(e) 1 love True   

  同樣,python提供類似scala的to函數的range用於控制循環:

    range是左閉右開的;如果需要控制起始與步長,可以使用range(初始值,結束值,步長)

sum = 0 for x in range(101): sum = sum + x print(sum)

  需要使用下標時可以通過相關函數使用:

list1 = ['i', 'love', 'china'] for i, e in enumerate(list1): print(i, e)

 

  while

sum = 0 n = 99
while n > 0: sum = sum + n n = n - 2
print(sum)

  breakcontinue同樣支持,但是這樣會造成程序的分支混亂,慎用!

  循環的else可以在循環正常結束時執行!

 

list1 = ['i', 'love', 'china'] for i, e in enumerate(list1): print(i, e) else: print("正常執行完成")

 

 

 

六、dict和set

  1.dict

    Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map

    定義的方式是使用冒號分割,大括號包圍:

>>> d = {'M': 80,'F': 90} >>> d {'M': 80, 'F': 90}
# 下標風格的取值,key不存在時為賦值

 >>> d['M']
 80

     使用dict也可以定義:

d1 = dict(a=99, b=98)

   類似scala的getOrElse方法進行取值:

>>> d.get('Thomas') # 返回空,None >>> d.get('Thomas', -1) -1

  需要注意的是由於需要計算key的hash來確定位置,所以key必須是不可變對象,例如整型、字符串

  刪除鍵值對:

  

  是否存在key:

'a' in d1

  遍歷keys values可以使用keys() values()等

  參考:https://www.cnblogs.com/Ivyli4258/p/8275021.html

  2.set

   和其他語言的set類似的定義,但是注意語法,需要給出一個list作出輸入來產生一個set

>>> s = set(['i',1,'love']) >>> s {'i', 'love', 1}

  可以通過add(key),remove(key)進行key的增刪

  由python這類語言的for可以知道,可以使用for進行遍歷:for e in s

更多python3基礎知識,參考菜鳥教程https://www.runoob.com/python3/python3-tutorial.html

在函數內對全局變量操作賦值?:https://blog.csdn.net/qq_28888837/article/details/88060376


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM