1102 基礎程式設計
這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容為上課之內容整理
基本
資料類型
- 布林(True/False)
- 整數 int
- 浮點數 float
- 字串 string
變數命名
注意 變數名稱的第一個字元不可以為數字,且有許多保留字,就不一一舉出拉!
- 小寫字母
- 大寫字母
- 數字
- 底線
指派變數
1 2 3 4 5 6 7 8
| a = 10 x, y, z = 1, 2, 3
a = input() print(a) type(a)
x, y = y, x
|
程式註解
運算子
- +: 加法
- -: 減法
- *: 乘法
- /: 浮點數除法
- //: 整數除法
- %: 餘數
- **: 乘冪
Math 數學函式
1 2 3 4 5 6 7 8
| import math
math.pi math.e math.sqrt(25) math.sin(180) math.log(100) math.log10(100)
|
String 字串
python 的字串是不可變(immutable)的(仔細來說是指記憶體位置的值是不可變的 詳細解說可看這裡)
1 2 3 4
| name = 'isadora' name[0] = a
|
宣告
1 2
| a = 'this is a string' b = ''
|
基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
a = 'hello' b = 'python' c = a + b
a = 'haha'*3
a = 'apple' b = 'banana' a,b = b,a
word = 'hello python' word[:] word[4:] word[:5] word[3:6:2]
|
字串函式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| my_string = 'hello python!'
length = len(my_string)
split_string = my_string.split(‘ ‘)
my_string = 'The formation and evolution of supermassive black holes'
join_string = '-'.join(split_string)
replace_string = join_string.replace('-','&')
my_string.startswith('The')
my_string.endswith('The')
my_string.find('The')
my_string.rfind('The')
my_string.count('The')
my_string = 'the formation and evolution of supermassive black holes'
my_string = my_string.title()
my_string = my_string.upper()
my_string = my_string.lower()
my_string = my_string.swapcase()
|
List 串列
串列是一串python的資料,裡面的資料可以不同的資料型態,每筆資料稱為元素,串列裡的元素,也可以是另⼀個串列
宣告
1 2 3 4 5 6
| a = list('apple')
today = '2018/05/30' s_today = today.split('/')
my_nest = [ 23, 'test', 3.4, [1,2,3] ]
|
串列函式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| my_nest = [ 23, 'test', 3.4, [1,2,3] ]
my_nest.index('test')
a = [0, 1, 2, 3, 4]
print(1 in a) print(5 in a)
a = ['Mon', 'Tue', 'Wed'] b = [1, 2, 3, 4]
c = a + b a.extend(b) a.append(b)
my_week = a * 2
my_week[3] = 'Thur' my_week[1:4] = ['x', 'y', 'z']
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] my_list.insert(4, 'insert here')
my_list[1:3] = [] del my_list[1:3] del my_list
my_list.remove('a')
my_list.pop(2)
my_list.count('a')
a = [5, 3, 1, 7, 8, 9]
a.sort() b = sorted(a) c = sorted(a, reverse=True)
a = [1, 2, 3] b = a b = a.copy() c = list(a) d = a[:]
|
Tuple 字組
Tuple跟list類似,但不能改變內容,若只有⼀個元素,結尾需要加上逗號
1 2 3 4 5
| my_tuple = ('a', 'b', 'c') thisistuple = (3,)
(b,a) = (a,b)
|
Dictionary 字典
資料是可變的,按照對應(mapping)的⽅式,並利⽤鍵值找到對應的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
price = dict() price = {} price = {'apple' : 30, 'orange' : 50, 'egg' : '10'}
price_apple = price['apple'] price_apple = price.get('apple')
price['apple'] = 10 price.update({'apple':10})
new_food = {'lemon' : 30, 'banana' : 50, 'beaf' : '300'} price.update(new_food)
del price['apple'] price.clear()
new_price = price
new_price = price.copy()
|
Set 集合
類似數學集合,set存不重複的值
1 2 3 4 5 6 7 8 9 10 11 12
| a = set('apple') b = set(['a', 'p', 'e', 'l'])
a&b a.intersection(b)
a|b a.union(b)
a-b a.difference(b)
|
Boolean 布林
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| x == y
x != y
x > y
x >= y
x < y
x <= y
|
Logic 邏輯運算
1 2 3 4
| and/or/not x > 0 and x < 20 x%3 or x%5 not (x%3 or x%5)
|
Loop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| example = ['a','b','c','d','e']
for i in range(0, len(example)): print(example[i])
for x in example: print(x)
i = 0 while (i <len(example)): print(example[i]) i += 1
continue break
|
File I/O 文件輸入輸出
基本讀寫檔
1 2 3 4 5 6 7 8 9 10 11
| mode = 'r' mode = 'w' mode = 'a' mode = 'rt'
my_file = open('hello.txt', mode)
string = my_file.read(5) my_file.write('Yeah! Great!')
my_file.close()
|
更多操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import os
os.rename('原檔名.txt', '新檔名.txt')
os.remove('檔名.txt')
os.mkdir('new_test')
os.chdir('new_test_2')
os.getcwd()
os.rmdir('new_test_2')
|
Time 時間
time模組時間函數是回傳自1970/01/01起的秒數
1 2 3 4 5 6 7
| import time
now = time.time() print(now)
now = time.ctime(now) print(now)
|
struct_time
time模組提供了struct_time物件
• tm_year # 西元年
• tm_mon # 月 1-12
• tm_mday # 日 1-31
• tm_hour # 時 0-23
• tm_min # 分 0-59
• tm_sec # 秒0-61 (60 or 61 閨秒)
• tm_wday # 禮拜幾 0-6 0為週一
• tm_yday # 1-366
• tm_isdst # 夏令時間
1 2 3 4 5 6 7 8
| import time
my_localtime = time.localtime()
print(my_localtime)
print(my_localtime.tm_year)
|
strftime()
• %Y # 年
• %m # 月份(01-12)
• %B # 月份名稱 (Januray…)
• %b # 月份名稱縮寫 (Jan…)
• %d # 日期(0-31)
• %A # 星期幾(Sunday…)
• %a # 星期幾縮寫(Sun…)
• %H # 小時(24小時制) (00-23)
• %I # 小時(12小時制) (01-12)
• %p # AM/PM
• %M # 分鐘 (00-59)
• %S # 秒 (00-59)
1 2 3 4 5 6 7 8
| import time
now = time.localtime() fmt = "%Y-%m-%d %H:%M:%S" time.strftime(fmt, now)
fmt = "It’s %A, %B %d, %Y, time:%I:%M:%S" time.strftime(fmt, now)
|
Calendar 日曆
1 2 3 4 5 6 7 8
| import calendar
cal = calendar.month(2018, 12, w=3, l=1) print (cal)
cal = calendar.calendar(2018, w=2, l=1, c=6) isleapyear(2018) calendar.monthcalendar(2018, 12)
|
Class 物件
⽤來製造物件的「模板」
以”⼈”為例,屬性:性別/姓名/年齡/⾝⾼/體重,⽅法:計算BMI
__init__是⽤來初始化物件的⽅法,在定義類別的第⼀個參數必須是self
1 2 3 4 5 6 7 8 9 10
| class person(): def __init__(self, gender, name, age, height, weight): self.gender = gender self.name = name self.age = age self.height = height self.weight = weight
def BMI(self): return self.weight / ((self.height/100.0) ** 2)
|