python入門(需要C++基礎)

Wind 發表於 2021-08-29
Python C++

title: python語法入門
author: Sun-Wind
date: August 25, 2021

python語法入門

博主最近參加一項比賽,因為需要用到python,所以在這裡記錄自己學習python的一些語法知識,希望能夠幫助初學者
注意:該學習過程要求有c或者C++基礎

python與C++的區別

  • python用新行來完成命令,而C++使用分號
  • python 用空格來定義範圍而c++使用花括號
  • python是一種物件導向的解釋性語言,C++是一種物件導向的編譯性語言
  • python中的幾乎所有東西都是物件,擁有屬性和方法

輸出和輸入

#This is a comment
print("Hello, World!")
x = 10
y = "Bill"
print(x)
print(y)

可以看到其語法十分直觀
​​print("Python is " + x)print語句可以和變數組合。(除字串也是變數)
裁切語法:指定開始索引和結束索引,用冒號分隔,返回對應變數的一部分如print(b[2:5])
存在負的索引,可以用負索引從字串末尾開始切片
利用input進行輸入

print("Enter your name:")
x = input()
print("Hello ", x)

語句

與C++的語法十分類似,下面僅介紹不同點
elif 相當於else if

a = 66
b = 66
if b > a:
  print("b is greater than a")
elif a == b:
  print("a and b are equal")

如果只有一條語句要執行,可以放到同一行,
如果ifelse都只有一個語句要執行可以放到同一行
if語句內容不能為空如果一定要為空,可以用pass代替

a = 66
b = 200

if b > a:
  pass

while 有break和continue,else可以和while語句配合

i = 1
while i < 7:
  print(i)
  if i == 3:
    break
  i += 1
i = 1
while i < 6:
print(i)
i += 1
else:
print("i is no longer less than 6")

for 迴圈和in關鍵字配合,相當於建立了一個迭代器物件,並且為每個迴圈執行next()方法

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)

變數

python用類來定義資料型別​python不用申明變數,在首次賦值時,才會建立變數並且變數沒有特定申明型別,隨時可以發生變化並且python允許在一行中給多個變數賦值如:
<x, y, z = "Orange", "Banana",>'
"Cherry"·變數的資料型別可以type(x)獲取

print(type(x))
print(type(y))
print(type(z))
  • 文字型別: str
  • 數值型別: int, float, complex
  • 序列型別: list, tuple, range對映型別: dict
  • 集合型別: set, frozenset
  • 布林型別: bool
  • 二進位制型別: bytes, bytearray, memoryviewcomplex是複數型別如x=1j,j作為虛部的書寫字串型別
    例如
x = 10    # int
y = 6.3  # float
z = 2j   # complex

可以用函式int(),float(),complex()。

x = int(1)   # x 將是 1
y = int(2.5) # y 將是 2
z = int("3") # z 將是 3

str()——從一種型別轉換為其他型別,但是複數型別不能轉換

x = str("S2") # x 將是 'S2'
y = str(3)    # y 將是 '3'
z = str(4.0)  # z 將是 '4.0'

int 型別長度不限
list是列表型別
print "list1[0]: ", list1[0]print "list2[1:5]: ", list2[1:5]t = (0,1,2,3,4,5,6,7,8,9)

thislist = ["apple", "banana", "cherry"]
print(thislist)
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[-4:-1])

tuple用小括號建立而且tuple中的元素不能修改列表(List)是一種有序和可更改的集合。允許重複的成員。
元組(Tuple)是一種有序且不可更改的集合。允許重複的成員。
集合(Set)是一個無序和無索引的集合。沒有重複的成員。
詞典(Dictionary)是一個無序,可變和有索引的集合。沒有重複的成員。並且也有負索引等適用於字串得操作
append()可以追加元素

thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)

insert()可以在指定得索引處增加專案

thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist)

remove()可以刪除指定得專案

thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)

pop()刪除指定得索引,如果沒有指定,就刪除最後一項

thislist = ["apple", "banana", "cherry"]
thislist.pop()
print(thislist)

del 關鍵字也可以刪除指定的索引,並且可以刪除列表

thislist = ["apple", "banana", "cherry"]
del thislist[0]
print(thislist)

clear()方法可以清空列表

thislist = ["apple", "banana", "cherry"]
thislist.clear()
print(thislist)

​​
注意:

內建的=只是對變數的引用,
列表的合併可以直接用+法
進行copy()和list()都可以複製列表,同時list()還可以構建列表
元組值是不可改變的,但是可以先將元組變成列表在變回去,元組構建函式是tuple()
元組不能刪除元素,但是可以直接刪除元組

字串語法

可以用len()函式獲取字串的長度

a = "Hello, World!"
print(len(a))

strip()可以刪除字串開頭和結尾的空白字元

a = " Hello, World! "
print(a.strip()) # returns "Hello, World!"

lower()返回小寫的字串
upper()返回大寫的字串
replace()用另一段字串來替換字串

a = "Hello, World!"
print(a.replace("World", "Kitty"))

split()在找到分隔符時將字串拆分為子字串

a = "Hello, World!"
print(a.split(",")) # returns ['Hello', ' World!']

可以用in not in 關鍵字查詢文字中是否出現短語字串

txt = "China is a great country"
x = "ina" in txt
print(x)

可以用+和” “ 拼接format()可以使得字串和任意變數拼接,

a = "Hello"
b = "World"
c = a + b
print(c)

原字串需要有大括號,format方法不限引數

quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))

集合和字典

​​set是無序的,構建set要用花括號

thisset = {"apple", "banana", "cherry"}
print(thisset)

add()方法新增一個專案,

thisset = {"apple", "banana", "cherry"}

thisset.add("orange")

print(thisset)

update()可以新增多個專案

thisset = {"apple", "banana", "cherry"}

thisset.update(["orange", "mango", "grapes"])

print(thisset)

有remove,del,clear操作
union方法可以合併後兩個集合

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3)

set也有自己的建構函式

thisset = set(("apple", "banana", "cherry")) # 請留意這個雙括號
print(thisset)

字典是無序,可變和有索引的集合,用花括號編寫,有鍵和值,且都是字串可以對新的專案賦值,這樣的話新的元素會被自動建立

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
print(thisdict)

字典中字典可以巢狀

函式

利用def來定義函式,函式也有return 語句
可以傳送任意個引數,只需要在引數名稱前面加個*

def my_function():
  print("Hello from a function")
def myfunction:
  pass

模組

py中的模組相當於c++中標頭檔案,用import引入datetime模組
可以用datetime類建立日期物件,年月日

import datetime

x = datetime.datetime.now()
print(x)

re模組專門用於匹配,
findall()返回包含所有匹配項的列表
split()返回一個列表,字串在每次匹配時被拆分,還可以指定第三個引數判定時第幾次出現進行拆分

import re

str = "China is a great country"
x = re.findall("a", str)
print(x)
import re

txt = "China is a great country"
x = re.search("^China.*country$", txt)
import re

str = "China is a great country"
x = re.split("\s", str)
print(x)
import re

str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

其中使用了正規表示式匹配

  • [] 一組字元 "[a-m]"
  • \ 示意特殊序列(也可用於轉義特殊字元) "\d"
  • . 任何字元(換行符除外) "he..o"
  • ^ 起始於 "^hello"
  • {} 確切地指定的出現次數 "al{2}"
  • | 兩者任一 "falls|stays"
  • () 捕獲和分組
    sub()可以把匹配替換為所選擇的文字,還可以指定第4個引數來控制替換的次數search()返回一個match物件,
import re

str = "China is a great country"
x = re.search("\s", str)

print("The first white-space character is located in position:", x.start())

span()返回的元組包含了匹配的開始和結束位置·
group()返回匹配的字串部分如果沒找到,則返回值
Nonebottle模組是一個快速小巧。輕量級的微型web框架,
@route()建立url對映,route是路由,括號裡是url的路徑,
def login() return 的內容將顯示在頁面上最後,
run() 函式啟動伺服器,並且我們設定它在 本機 的 8080 埠上執行


可以在命令列中執行python檔案前提是已經安裝了pythonpython
註釋以#開頭
多行註釋可以採用“”“即未分配給變數的字串文字


  • 就先寫到這裡吧,這一節沒有寫類和物件的語法
  • 以後想到什麼再回來補充一下 阿巴阿巴o( ̄▽ ̄)ブ