int
float
print(10+3) # 加法
print(10-3) # 減法
print(10*3) # 乘法
print(10/3) # 除法
print(10//3) # 除法(取整數,無條件捨去)
print(10%3) # 取餘數
print(10**3) # 次方
13 7 30 3.3333333333333335 3 1 1000
現在的舉例是10跟3的各種運算, 那如果我想換成55跟5呢?
a=10
b=3
print(a+b) # 加法
print(a-b) # 減法
print(a*b) # 乘法
print(a/b) # 除法
print(a//b) # 除法(取整數,無條件捨去)
print(a%b) # 取餘數
print(a**b) # 次方
13 7 30 3.3333333333333335 3 1 1000
a=10
url = "http://blog.marsw.tw"
xyz = "http://blog.marsw.tw"
vs.url = "http://blog.marsw.tw"
and | as | assert | break | class |
continue | def | del | elif | else |
except | finally | for | from | global |
if | import | in | is | lambda |
nonlocal | not | or | pass | raise |
return | try | while | with | yield |
None | False | True | exec |
a=3
b=a
print(id(a),id(b))
a=4
print(id(a),id(b))
10105888 10105888 10105920 10105888
type(物件)
:印出此物件的型別my_score = 96
pi = 3.14159
url = "http://blog.marsw.tw"
print(type(my_score))
print(type(pi))
print(type(url))
print(type(print))
<class 'int'> <class 'float'> <class 'str'> <class 'builtin_function_or_method'>
my_score = 96
print(type(my_score))
my_score = 96.0
print(type(my_score))
my_score = "96"
print(type(my_score))
<class 'int'> <class 'float'> <class 'str'>
my_string = "Hi"
my_string2 = ""
my_string2 = my_string2 + "Py" + 'Ladies'
my_string3 = "Hello"*4
print (my_string)
print (my_string2)
print (my_string3)
Hi PyLadies HelloHelloHelloHello
"
或是單引號'
,將字串包住my_string = "123"
my_int_number = 456
print (my_string+my_int_number)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-7-151fbba3d316> in <module>() 1 my_string = "123" 2 my_int_number = 456 ----> 3 print (my_string+my_int_number) TypeError: Can't convert 'int' object to str implicitly
input1 = 123
input2 = "456"
input3 = "5566.123"
print (str(input1)+input2)
print (input1+int(input2))
print (float(input3)+input1)
print (int(input3))
123456 579 5689.123
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-8-347d8eaf9d2b> in <module>() 5 print (input1+int(input2)) 6 print (float(input3)+input1) ----> 7 print (int(input3)) ValueError: invalid literal for int() with base 10: '5566.123'
round(數值,n)
:取小數點後n位,靠近偶數print(round(1.5)) # 1.5 在1和2中間,最靠近的偶數是2
print(round(2.5)) # 2.5 在2和3中間,最靠近的偶數是2
2 2
pi = 3.14159
pi_2 = round(pi,2)
print (pi_2)
3.14
pow(x,y)
:x的y次方向pow(x,y,z)
:x的y次方向除以z的餘數divmod(被除數,除數)
:回傳商與餘數abs(數值)
:取絕對值print(pow(10,3))
print(pow(10,3,3))
print(divmod(10,3))
print(abs(10-15))
1000 1 (3, 1) 5
a+= b
: a = a+b
a-= b
: a = a-b
a*= b
: a = a*b
count = 0
count+= 1
print (count)
count*= 3
print (count)
count-= 2
print (count)
1 3 1
a = 3
print ("a*2=",a*2)
print ("a^2=",a**2)
a*2= 6 a^2= 9
上面例子是計算3的兩倍值、平方值,
但如果我今天想要計算5的兩倍值、平方值呢?
我就要再把程式的第一行改掉
a = 5
print ("a*2=",a*2)
print ("a^2=",a**2)
a*2= 10 a^2= 25
這對已經會寫程式的你,這或許不是難事,
但假設你希望把你寫的好用程式也讓其他人能使用呢?
如果有個跟我們平常在用的計算機一樣,
可以有個介面輸入數字、想要運算的方式,
程式就能產生我想要的結果,好像很不錯~
input(提示字)
:從鍵盤輸入值print(物件)
:輸出物件到螢幕上,
印出多個物件(印出後,會以空格分隔物件)a = input("a=") # "a=" 是提示字,讓我們知道電腦在等我們輸入
b = input("b=")
print ("a+b=",a+b) # input進來是字串
a=5 b=2 a+b= 52
a = input("a=") # "a=" 是提示字,讓我們知道電腦在等我們輸入
b = input("b=")
print ("a+b=",a+b) # input進來是字串
a=Hello b=PyLadies a+b= HelloPyLadies
input()可以讓我們跟電腦互動
而不單單只是讓電腦print()東西出來而已
a = input("a=") # "a=" 是提示字,讓我們知道電腦在等我們輸入
a = int(a) # input進來是字串,要做數值運算要用int()轉換
# 以上也可以簡寫為 a = int(input("a="))
print ("a*2=",a*2)
print ("a^2=",a**2)
a=5 a*2= 10 a^2= 25
a = input("請問你的名字是? ")
print ("你好",a) # 用,分隔會印出空格
# print("你好"+a) # 可以用字串相加,就不會有空格
請問你的名字是? Mars 你好 Mars
print(10>3)
print(10==3) #<左邊的物件>「是否等於」<右邊的物件>
print(10!=3) #不等於
print(10<=3)
print("Hi"=="hi")
True False True False False
print(10>3 and 10==3)
print(10>3 or 10==3)
print(not 10==3)
False True True
isinstance(數值,型別)
:產生的結果為bool布林型別print(isinstance(222,int))
print(isinstance(3.14,int))
print(isinstance(3.14,float))
print(isinstance('3.14',str))
True False True True
print(bool(""), bool(0))
print(bool(-1), bool(0.01), bool(1), bool("Hi"))
False False True True True True
if 布林型別:
如果布林型別==True,就做這裡面的事情
# 基本的判斷式是由 if 構成
a = 61
if a>=60:
print ("及格")
及格
# 不符合條件,因此什麼都沒有印出
a = 58
if a>=60:
print ("及格")
# 如果希望處理判斷條件之外的狀況,可以用else
a = 58
if a>=60:
print ("及格")
else:
print ("不及格")
不及格
Python是靠「縮排」(四個空格),來斷定程式碼屬於那一個區塊。
if/else 後面記得要有:
a = 11
b = 8
if a>b:
print ("a>b")
elif a<b:
print ("a<b")
else:
print ("a<=b")
print ("這是判斷式外的區塊")
a>b 這是判斷式外的區塊
a = 11
b = 8
# 第1組判斷式
if a%2==0:
print ("a is even")
# 第2組判斷式
if a>b:
print ("a>b")
elif a<b:
print ("a<b")
else:
print ("a==b")
a>b
if
就是一組判斷式a = 11, b = 8
,a>b
,不受到第1組判斷式沒有任何條件符合的影響a = 6, b = 8
,a is even
,a<b
keyword = "我想吃飯"
if keyword=="我想吃飯":
print("建議你可以吃??")
elif keyword=="天氣如何":
print("今天的天氣...")
elif keyword=="7-11":
print("最近的7-11在oo")
else:
print("我聽不懂你在說什麼")
建議你可以吃??
如果有很多個條件,一個if不夠用,可以用elif,
一個elif不夠用,可以繼續用很多個elif
應該沒有看過Siri回答你今天天氣之後,又說我聽不懂你在說什麼吧?
cost = 1000
gift = ""
# 第1組判斷式
if cost>=500: # 滿500,送購物袋
gift = gift+"購物袋"
# 第2組判斷式
if cost>=1000: # 滿1000折100
cost = cost-100
print(cost)
print(gift)
900 購物袋
n= 0.1 + 0.2
print (n)
print (n==0.3, abs(n-0.3)<0.0001)
print(0.1+0.1+0.1-0.3)
0.30000000000000004 False True 5.551115123125783e-17
from decimal import *
d1 = Decimal(0.1)
d2 = Decimal('0.1')
print(d1)
print(d2)
0.1000000000000000055511151231257827021181583404541015625 0.1
f = 0.1+0.1+0.1-0.3
D = Decimal
d3 = D('0.1')+D('0.1')+D('0.1')-D('0.3')
print(f)
print(d3)
5.551115123125783e-17 0.0
如果想表示 1/3 呢?
from fractions import *
fr1 = Fraction(1,3)
fr2 = Fraction('1/3')
print(fr1,fr2,fr1+fr1+fr1)
1/3 1/3 1
F = Fraction
print(F(16,10)) # 會自動約分
print(F(F(1,3),F(1,2)))
8/5 2/3
a = 5+7j
b = 5+7J
c = complex(5,7)
d = complex('5+7j')
print (a,type(a))
print (b,type(b))
print (c,d)
(5+7j) <class 'complex'> (5+7j) <class 'complex'> (5+7j) (5+7j)
print (complex('5 + 7j')) # 字串不能有空格
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-36-94f607a2ca5c> in <module>() ----> 1 print (complex('5 + 7j')) # 字串不能有空格 ValueError: complex() arg is a malformed string
a = 4+3j
b = 2+5j
print(a+b,a-b)
print(a*b,a/b)
print(a==b)
print(a>b)
(6+8j) (2-2j) (-7+26j) (0.793103448275862-0.48275862068965514j) False
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-37-eac484fb1260> in <module>() 4 print(a*b,a/b) 5 print(a==b) ----> 6 print(a>b) TypeError: unorderable types: complex() > complex()
a = 4+3j
print(abs(a)) # 絕對值,複數的模
# 直角三角形 a^2 + b^2 = c^2
import math
print(math.sqrt(4**2+3**2)) # 取整數的平方根
import cmath
print(cmath.sqrt(a)) # 取複數的平方根
5.0 5.0 (2.1213203435596424+0.7071067811865476j)
import math
a = complex(1,math.sqrt(3)) # 1+3j
import cmath
print(cmath.phase(a)) # 弧度
print(cmath.phase(a)*180/math.pi) # 角度
print(math.degrees(cmath.phase(a))) # 角度
# 角數 * pi /180 = 弧度
# 60 * 3.14159 / 180 ≒ 1.0471967
1.0471975511965976 59.99999999999999 59.99999999999999
[a,b,c] | 字串轉換、串列、tuple、字典、集合 |
x[index], x[i1:i2], x(parameter), x.attr | 索引、切片、函式呼叫、存取屬性項 |
** | 次方 |
+x, -x, ~x | 正數、負數、位元NOT運算 |
*, /, //, % | 乘法、除法、餘數、字串格式化 |
+, - | 加法、減法 |
>>, << | 位元位移運算 |
& | 位元AND運算 |
^ | 位元XOR運算 |
| | 位元OR運算 |
in, is, <, ==, > | 比較運算 |
not x | 布林NOT邏輯運算 |
and | 布林AND邏輯運算 |
or | 布林OR邏輯運算 |
if/else | 條件運算式 |
lambda | lambda運算式 |
print(3+5*4-8/2)
19.0
a=5
b=5
c=2
# (c==3) or (a==b and (not a==3)) or (b==4)
if c==3 or a==b and not a==3 or b==4:
print ("1")
else:
print ("2")
1
可以用()來方便閱讀,也能確保自己的想法是正確的
(c==3) or (a==b and (not a==3)) or (b==4)
((c==3) or (a==b)) and ((not a==3) or (b==4))
x if y else z
:當y為True,運算的結果是x,否則是z
# 如果x是奇數,就保留原值,否則-1
x = 9
result = x if (x%2==1) else x-1
print(result)
9
# 如果資料為空,設為預設值
x = ""
result = x if x else "Hi"
print(result)
Hi
a = 3e400 # 浮點數 3*10^400
print(a)
print(a/999999, a*-2, 5/a)
print(a/(a/2), a/a)
import math
print(math.sqrt(a),math.sqrt(a/a))
inf inf -inf 0.0 nan nan inf nan
nan
:代表不具意義的數學運算inf
:無限大電腦會用二進位運算原因是因為穩定、實踐容易,運算速度較快,
而使用十六進位是方便表示太大的數字(eg. 色碼、記憶體位置),
但實務上,我們還是比較習慣用十進位。
可以把這章節當成額外讀物,了解電腦以及生活中進位的運作方式,
並不一定要熟悉裡面所有的語法~
bin(整數物件)
:轉換成2進位oct(整數物件)
:轉換成8進位hex(整數物件)
:轉換成16進位int(整數物件)
:轉換成10進位int(字串,以多少進位解讀)
:預設為10進位,如果寫0則是以字串的格式為準。print(int(100), bin(100), oct(100), hex(100))
print(0xFFFFFF, int(0xFFFFFF), int('0xFFFFFF',16))
print(int('144',0), int('0o144',0), int('0x64',0))
100 0b1100100 0o144 0x64 16777215 16777215 16777215 144 100 100
~x
:NOT,0與1互換,等同於-(x+1)x&y
:AND,x,y在同個位元都為1,該位元才會為1x|y
:OR,x,y在同個位元只要其一為1,該位元才會為1x^y
:XOR,x,y在同個位元都不同,該位元才會為1x<<y
:x每個位元往左位移y次,右手邊新的位元補0,等同於 x*(2**y)
x>>y
:x每個位元往右位移y次,等同於 x//(2**y)
# int(3) = bin(11) 11
# int(2) = bin(10) 10
print(3&2) # AND 10
print(3|2) # OR 11
print(3^2) # XOR 01
2 3 1
# int(3) = bin(11) 11 -> 110 bin(110) = int(6)
# ^ 補零
print (3<<1)
6
~x
會是-(x+1) 十進位 | 二進位(4個位元表示) | 二進位(8個位元表示) |
---|---|---|
4 | 0100 | 0000 0100 |
3 | 0011 | 0000 0011 |
2 | 0010 | 0000 0010 |
1 | 0001 | 0000 0001 |
0 | 0000 | 0000 0000 |
-1 | 1111 | 1111 1111 |
-2 | 1110 | 1111 1110 |
-3 | 1101 | 1111 1101 |
-4 | 1100 | 1111 1100 |
a = 2
print(~2)
-3
Python 程式設計入門 (適用於 2.x 與 3.x 版) 葉難
The Python Standard Library(Python 3.6.2)
2. Built-in Functions
3. Built-in Constants
4. Built-in Types (4.1~4.5)