Chapter 2 變數與資料類型

2-2 資料類型與輸出入

資料的類型

1. 資料的型態(type),有整數(integer)、浮點數(float)和字串(string)。相對應的轉換函式為int()、float()、str()。

    還有一種布林值(Boolean),就是真假值(判斷正確與否),True或False

lunch = 100
dinner = 180
totalcost = lunch + dinner
print(totalcost)
print(type(totalcost)) # int 整數
yearcost = 35000
daycost= yearcost / 365
print(daycost)
print(type(daycost)) # float 浮點數
mysentence = "哈囉, 大家好"
print(mysentence)
print(type(mysentence)) # str 字串
a=12;b=34
print(a+b) #46
print(str(a)+str(b)) #1234
print(str(a)+"xxx"+str(b)) #12xxx34
c='12';d='34'
print(c+'yyy'+d) #12yyy34
print(int(c)+int(d)+100) #146
a=input("輸入第一個值:")
b=input("輸入第二個值:")
print(a+b)
print('I\'m \"python\"')
print(2>3)
print(9>3 and 9>5 )
print(4>5 or 3>1)
print(not 2<5)

2.『%』是輸出控制字元

    使用『%』控制資料輸出時,還要依資料的型態使用對應的符號, 整數請用『d』,浮點數使用『f』, 字元用『c』,字串請用『s』

a="Wong";b=15
print("小帥哥%s 年齡是%d" %(a,b))
pi=3.14159
print("%6.2f" %pi) #f代表小數有幾位 寬度是6,小數取2位,小數點佔1位,故整數剩3位
num1=123
num2=123456789
num3=123456
print(num1, num2, num3) #預設各資料間隔為「一個空白」
print('%10d %10d %10d' %(num1, num2, num3))
print('%10d %10d %10d' %(num2, num3, num1))
print('%-10d %-10d %-10d' %(num1, num2, num3)) #預設靠右, 多-代表靠左
float1=1.234
float2=123456.789
float3=123.456
print(float1, float2, float3)
print('%10.2f %10.2f %10.2f' %(float1, float2, float3))
print('%10.2f %10.2f %10.2f' %(float2, float3, float1))
print()
print('%-10.2f %-10.2f %-10.2f' %(float1, float2, float3))
print('%-10.2f %-10.2f %-10.2f' %(float2, float3, float1))
a=-5;b=-2;c=3
print('%dx%+dy%+d=0'%(a,b,c)) #正數預設是不會輸出正號的,若要強制輸出符號,那就加上『+』

3. input()輸入的資料預設為字串(string)。若要將輸入值改為數值,則要加上 eval() 

a,b,c=eval(input('Please enter three integer numbers:'))       #輸入時,數字必須用","分開
print('a =',a, 'b =',b, 'c =',c )
print('a = %d b = %d' %(a,b))
print('a + b =', a+b)

4. print() 是 Python 負責將結果「輸出」的函式,將輸出的結果顯示在程式執行的命令列中,print 有下列幾個參數

print(*objects, sep, end, file, flush) 
 
參數說明
*objects要印出的對象,可以用逗號分隔多個對象
sep預設為「一個空白」,表示每個分隔的對象,在印出時中間的間隔符號
end預設換行符「\n」,表示印出的結尾符號
file預設「None」,表示要寫入的文件對象
flush預設「False」,設定為 True 可以防止函式對輸出資料進行緩衝,並強行重新整理
print(1,2,3) # 1 2 3
print(1,2,3,sep=';') # 1;2;3
print(1,2,3,sep=';',end='!')
print(1,2,3) # 1;2;3!1 2 3
print(10*'a') #aaaaaaaaaa
print(100)
print(200)
print(300, end='') #不會換行
print(400) #300400
print(500, end=' ') #不會換行, 但多一空格
print(600) #500 600
print(700, end='***') #不會換行, 但多文字串
print(800) #700***800
sa = '125.230'
print(sa+"test")
print(type(sa))
sa=float(sa)
print(sa)
sa=int(sa)
print(sa+100)
print('Python is fun')
print('So, learning Python now!')
# 以 \n :跳下行, +\ :此字串連續到下一行
message = 'I think that Python is fun\n' +\
"So, let's learn Python now!"
print(message)
print('也可以這樣寫:Python is fun\nSo, learning Python now!')

運算子

1. 算術運算 : +, -, *, /, //(商), %(餘數), **(次方)。

2. 算術指定運算:  s += 2 相當於 s = s + 2   ;   a *= 2 相當於 a = a * 2   ;  c //= 3  相當於 c = c // 3  ;    d %= 4  相當於 d = d % 4  ;   f **= 3  相當於 f = f ** 3

3. 關係運算 :  >,  <,  >=,  <=,  ==  (#是否相等),  !=  (#是否不相等)

4. 邏輯運算 : and, or, not 

      第3類與第4類的運算子結果均為布林值(Boolean),就是真假值(判斷正確與否, True或False)

5. 數學的不等式 1<x<6,代表 x 介於 1 與 6 之間,而 Python 的表達方式則是    x>1  and  x<6

a = b = c = d = e = f = 100
a += 5
print('a=',a)
b -= 3
print('b=',b)
c *= 2
print('c=',c)
d %= 12
print('d=', d)
e //= 3
print('e=', e)
f **= 2
print('f=',f)
a = b = 100
c = 80
print("a > 100 :", a > 100) # False
print("a == 100 :", a == 100) # True
print("a + b != 200 :", a + b != 200) # False
print("a + b != 300 :", a + b != 300) # True
print("b < 200 :", b < 200) # True
print("a > 100 and b < 200 :", a > 100 and b < 200) # False
print("a > 100 or b < 200 :", a > 100 or b < 200) # True
print("not (b < 200) :", not (b < 200)) # False
print("a < c :", a < c) # False
print(" 50 < a < 150 :", a > 50 and a < 150 ) # True