Python 是一種直譯的語言
高階程式語言
很好懂,簡單,容易上手
廣泛使用
總之據說很好用
a = input()
print(a)cute = "cat"
n = 1
n = n+1 #2a = input()
print(a) #輸入a,此時a是字串
a = input()
a = int(a) #將a轉成整數
b = int(input()) #輸入的時候順便轉為整數a = 4
b = 3
a = a+b # 7
a = a-b # 1
a = a*b # 12
a = a/b # 1.333333333
a = a//b # 1
a = a%b # 1
a = a**b # 64a = 4
b = 3
a >= 3 # True
a != b # Truea = "hello"
a = a+a
print(a) # hellohello
a = "world"
a = 2*a
print(a) # worldworld
"hello" == "world" # 01 and 1 # 1
0 and 1 # 0
0 and 0 # 0"I am string. Nice to meet you."| 函式 | 用途 |
| title() | 全部單字首字母大寫 |
| capitalize() | 第1個單字首字母大寫 |
| upper() | 全部字母大寫 |
| lower() | 全部字母小寫 |
| center() | 依指定長度置中對齊 |
| ljust() | 依指定長度靠左對齊 |
| rjust() | 依指定長度靠右對齊 |
| split() | 單字串切為多字串,可指定次數 |
| rsplit() | 單字串切為多字串,可指定次數 (從右切割) |
| join() | 多字串併為單字串 |
| count() | 計算小字串在大字串中個數 |
| zfill() | 依指定字元寬度補0 |
| strip() | 兩邊移除指定字元 |
| lstrip() | 左邊移除指定字元 |
| rstrip() | 右邊移除指定字元 |
| find() | 尋找指定字串 |
| replace() | 取代指定字串 |
s = "hello"
t = s.upper()
print(t) #"HELLO"a = int(input())
if a < 60:
print("不及格")
elif a < 90:
print("不錯!")
else:
print("Good job!")for i in range(10):
print(i) # 0~9
for i in range(3,10):
print(i) # 3~9
for i in range(3,10,2):
print(i) # 3 5 7 9
for i in range(10,-3,-4):
print(i) # 10 6 2 -2i = 1
while i < 10:
i = i+1
print(i) # 10a = 0
for i in range(1,10):
if i >= 5:
break
a = a+i
print(a) # 10
for i in range(1,10):
if i == 3:
continue
a = a+i
print(a) # 52li = [ 30, 41, 52, 63 ]
li[2] # 52
b = li[0]
print(b) # 30
print(sum(li)) # 186
li.append(3)
print(li[4]) # 3
print(len(li)) # 5
li[0] = 10 # 修改30變成10串列裡面可以塞幾乎任何東西,包含再塞個串列,也可以塞不同型別的東西,這聽起來很有趣
li = [ 10, True, [ "hello", 23 ], "world" ]
print(li[2][0]+li[3]) # "helloworld"li = [ 1, 2 , 3, 4, 5 ]
a = 0
for i in li:
a = a+i
print(a) # 15
if 2 in li:
print("Meow")a = () # 空tuple
a = (1, 3, 4, 2, 5)
a[0] # 1
a[1] = 27 #錯誤可以修改值稱為可變
像是串列就是可變
但是元組就是不可變
整數看起來可變,但其實是不可變
事實上 a = 4這個動作,是將a原本指向的東東丟掉後,重新指向4的喔><
變數名稱
物件
不可變:將箭頭拔掉後重新指向一個新的物件
可變:將物件改掉
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]Example
def grade(x):
if x >= 60:
return "及格"
else:
print("不及格")
#函式可以有return也可以沒有自己呼叫自己
像是f(n) = f(n-1)*2
這樣的遞迴函氏
def F(x):
if x == 1 or x == 2:
return 1
else:
return F(x-1)+F(x-2)一旦一個物件沒有被任何名稱指向時,它就會被python的垃圾收集機制回收
名稱的話,只有它曾經存在過,那它就會一直存在到程式結束為止。
不過實務上可以使用del語句來刪掉它
a = 3
del a
print(a) #錯誤一個名稱的可視範圍,是指所有能夠存取它的地方。
在函式外面宣告的變數稱作全域變數。
在函式內部的變數稱作區域變數。
在python內建的變數稱作內建變數。
同名的區域變數會覆蓋掉全域變數的唷
def meow():
a = 2
print(a)
a = 3
meow #輸出2如果想要在函數中使用全域變數的話,則可以使用global語句唷><'
a = 3
def meow():
global a
a = 2
meow
print(a) #輸出2當使用某個變數的時候,會優先在區域中找是否有那個變數,找不到的話就往上層找,若全域變數也找不到的話,就會到內建變數中找。
a = 3
def meow():
print(a)
meow # 在meow中找不到a,往全域變數找有些動作會建立新物件,有些動作則會原地修改,多注意唷><
a = b = c = [0]
b = b+[1] #右邊產生了新物件
c += [2]
# a [0,2]
# b [0,1]
# c [0,2]淺複製:兩個名稱指向同個物件
深複製:指向不同物件
import copy
a = [0]
b = copy.copy(a)
c = copy.deepcopy(a)
b[0] = 1
c[0] = 2
# a [1]
# b [1]
# c [2]
這邊好像有錯
不要管這頁簡報for i in range(0,10):
print("meow")a = []
for i in range(0,4):
a.append(i)
b = [5*x for x in a]
c = [5*x for x in a if x%2 == 0]
# b [0,5,10,15]
# c [0,10]這好像很方便可以嘗試用用看
它也有一堆噁心的操作,像是包一堆串列生成式之類的,有興趣的話可以玩玩看
import math
print(math.pi) # 3.1415926535....
print(math.factorial(6)) # 720
#
import math as m #import math,並將其縮寫為m
print(m.e) # 2.8....
#
from math import pi as meow # 從math裡面import pi進來
print(meow) # 3.1415926
#
from math import * #將math裡所有咚咚import進來
print(pi) #3.1415926dict
有key對到value
從鍵映射到值,鍵要不可變
d = {}
d = {'name': 'cat', 'love': 'meow', 'size': 20}
print(d['name']) # 'cat'
d['size'] = 18
print(d['size']) # 18d = ['name': 'AY', 'age': 17, 'club': 'infor']
'club' in d # True
del d[age]
print(d[age]) #錯誤
d['love'] = 'Ayase'
d.get('love') # 'Ayase'
for k in d.keys():
print(k)
for v in d.values():
print(v)
for k,v in d.items():
print(k,v) // 不保證順序舉例來說
x = {1,2,3,1}
x # {1,2,3} 每個元素只會出現一次
x = set(range(1,3))
x # {1,2}
x = {[1,2],3} #錯誤
#set裡面只能塞不能修改的物件
#list可修改,int不可修改
print(x[0]) #錯誤,set不具順序性,沒有index
x = {1,2}
x.add(3)
x # {1,2,3}
x.remove(1)
x # {2,3}
x.remove(1) # 錯誤,1不存在
x.discard(1) # OK,discard可以無視不存在的
x.discard(2)
x # {3}x = {1,2,3}
y = {2,3,4}
x&y # {2,3}
x|y # {1,2,3,4}
x-y # {1}
x^y # {1,4}
li1 = [1,1,1]
li2 = [1]
x = set(li1)
y = set(li2)
x == y # True把所有東西包成物件,然後物件裡面可能會有方法(method),也就是某種類似函式的東西,然後用物件做任何事情的說><
銀行帳戶是一個物件
裡面有個int紀錄還有多少錢
或許有個list紀錄所有的交易
還有著存款、提款、查詢之類的方法
封裝:將所需要的資料包在物件裡面,僅提供公開介面加以存取
線上遊戲中,所有武器都有攻擊力之類的設定,所以武器繼承自攻擊力的物件、爆擊率的物件......等等
多型:讓同一個方法或運算子因為型別不同而做不同的事情
銀行提供ATM而不直接提供鈔票來交易
繼承:讓物件有上下關係,子物件可以使用父物件的程式碼
a+b
在int是加法
在str是連接
class account():
def __init__(self):
self.b = 0
def dep(self,amou):
self.b += amou
def wit(self,amou):
self.b -= amou
def get(self):
return self.b
ac = account()
print(ac.b) # 0
ac.dep(100)
ac.wit(10)
print(ac.get()) # 90class A():
def __init__(self,a):
self.a = a
def meow(self):
return self.a*(self.a+1)
class B(A):
def __init__(self,a,b):
# self.__init__(a) 錯誤
# A.__init__(self,a) 可以
# super(B,self).__init__(a) 可以
super().__init__(a)
self.b = b
def cute(self):
return self.b*self.meow()
AY = B() #錯誤
AY = B(2,1187)
print(AY.cute()) # 7122
class Animal():
def shout(self): print('Animal shout')
class Dog(Animal):
def shout(self): print('Dog shout')
class Cat(Animal):
def shout(self): print('Cat shout')
d = Dog()
e = Cat()
d.shout() # 'Dog shout'
e.shout() # 'Cat shout'
子類別和父類別method名字相同稱為覆寫
不同類別的實體有著相同的method名字則稱為多型
期待再會喔的說
(不)