Skip to content

資料和運算

使用資料型別和運算子進行操作

打怪的時數

1
2
3
4
5
# 打怪的時數

start = input("你幾點開始打怪的? ")
end = input("現在幾點? ")
print("你已經打了 " + str(int(end)-int(start)) + " 小時")

判讀資料類別(1)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 判讀資料類別(1)

x1 = "8"
y1 = 7
a = x1 * y1
print("a:", a, type(a))

x2 = 8
y2 = 7
b = x2 / y2
print("b:", b, type(b))

x3 = 8.7
y3 = 1
c = x3 / y3
print("c:", c, type(c))

判讀資料類別(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
# 判讀資料類別(2)

"""
[測資開始]
16
False
'Python'
9.87
"5.38"
+2E11
"True"
[測資結束]
"""

while True:
    try:
        # 1. input() 讀入一行測資
        # 2. eval() 解析資料值
        # 3. type() 判讀資料類別
        print(type(eval(input())))
    except EOFError:
        # 測資讀完,會發生 EOFError
        # EOF: End Of File
        # 立即離開 while 迴圈
        break

判讀布林值

1
2
3
4
5
6
7
8
9
# 判讀布林值

print(bool(0))
print(bool(1))
print(bool(-1))
print(None is None)
print(False is False)
print(-7 < 0 < 7)
print(-7 > 0 < 7)

特別的 or 運算

1
2
3
4
5
6
7
# 特別的 or 運算

print(0 or 7)
print(1 or 7)
print(-1 or 7)
print(None or 7)
print(False or 7)

運算子優先序(1)

1
2
3
4
5
6
7
8
# 運算子優先序(1)

# 括號 > 指數 > 乘、除、商、餘 > 加、減
a = 24
b = 9
answer = (a % b * 100) // 2 ** 4.0 - b
# 正確選項為 28.0 或 28
print(answer)

運算子優先序(2)

1
2
3
4
5
6
7
8
9
# 運算子優先序(2)

# 括號 > 指數 > 正、負、反 > 乘、除、商、餘 > 加、減 > 且、或

# 指數 > 正數(+)、負數(-)、反相(not)
print(-2**3)
print((-2)**3)
print(+2**2 + -3**3)
print(-100 + 8**2*2)

運算子優先序(3)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 運算子優先序(3)

# 括號 > 指數 > 正、負、反 > 乘、除、商、餘 > 加、減 > 且、或

# 且(and)的邏輯運算:兩方都為True才是True
print(True and True)
print(5+3 < 10 and 5*3 > 10)

# 或(or)的邏輯運算:其中一方為True就是True
print(True or False)
print(5+3 < 10 or 5-3 > 10)

運算子優先序(4)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 運算子優先序(4)

# 括號 > 指數 > 正、負、反 > 乘、除、商、餘 > 加、減 > 且、或

# 反(not)的邏輯運算:
print(not True or False)
print(not False or False)
print(not (5+3 < 10 or 5-3 > 10))
print(not (5+3 == 10 and 5-3 != 10))

# 0表示False,其它整數表示True
print(not 1)
print(not 0)
print(not -1)

# 空字串表示False,空白字串表示True
print(not '')
print(not ' ')

字串合併(1)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 字串合併(1)

astr = 'Hello'
print(astr)
bstr = 'Hello'
astr += bstr
print(astr)
print(bstr)
bstr += astr
print(bstr)

字串合併(2)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 字串合併(2)

astr = '123'
print(astr)
bstr = '456'
astr += bstr
print(astr)
print(bstr)
bstr += astr
print(bstr)

出生西元年

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 出生西元年

age = input("你目前幾歲? ")
this_year = input("現在西元幾年? ")
birth_year = eval(this_year) - eval(age)
message = "你的出生年是 " + str(birth_year)
print(message)

# 判讀所有變數類別
print('-'*20)
print(age, type(age))
print(this_year, type(this_year))
print(birth_year, type(birth_year))
print(message, type(message))

數值是否存在串列

1
2
3
4
5
# 數值是否存在串列

alist = [5, 4, 9, 8, 7]
print(2 in alist)
print(4 in alist)

兩個串列比較

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 兩個串列比較

alist = ['1', '2', '3', '4', '5']
blist = [1, 2, 3, 4, 5]
print(alist)
print(blist)
print(alist is blist)
print(alist == blist)
alist = blist
print(alist)
print(blist)
print(alist is blist)
print(alist == blist)

平均分數

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 平均分數

# 全班的 ITS Python 分數
scores = [810, 856, 956, 977, 878]
# 全班人數
n = len(scores)
# 全班分數合計
total = sum(scores)

# 計算平均分數,無條件捨至整數
print('# 算法一')
print(int(total / n))
print('# 算法二')
print(total // n)

跑步配速計算

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 跑步配速計算

# 允許輸入浮點數,如此可以表示得更精準
meters = float(input("經過多少公尺? "))
# 經過距離換為公里
kms = meters / 1000
minutes = int(input("幾分? "))
seconds = int(input("幾秒? "))
# 經過時間換算為秒
elapsed_time = minutes*60 + seconds
pace = elapsed_time / kms
# 平均每公里經過時間
print("跑步配速:", str(pace//60) + ":" + str(pace%60))

串列加乘合併

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 串列加乘合併

list1 = [5, 4]
list2 = [8, 7]

# list1 和 list2 合併後,存到 list3
list3 = list1 + list2
print(list3)

# 將 list3 複製 2 個後合併,並存到 list4
list4 = list3 * 2
print(list4)

字串數據切取

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 字串數據切取

# 字串物件[start:stop:step]

letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(letters[3:15])
print(letters[3:15:3])
print(letters[15:3:3])
print(letters[15:3:-3])
print(letters[::-1])
print(letters[::-3])

串列數據切取

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 串列數據切取

# 串列物件[start:stop:step]

alist = list(range(20))
print(alist[0::2])
print(alist[1::2])
print(alist[:10])
print(alist[10:])
print(alist[:5])
print(alist[-5:])
print(alist[18:3:-3])
print(alist[::-1][:10])