Exercise2是註釋和井號 Comments and Pound Characters 具體詳情請參考 "習題一" ,這裡就不在做過多的贅述。 習題 3: 數字和數學計算 學習目標: 瞭解Python中常用的算術運算符,並瞭解運算符之間的先後運算順序 在各大常用的電腦語言中都有常見的算術運算符 ...
目錄
Exercise2是註釋和井號 Comments and Pound Characters 具體詳情請參考習題一,這裡就不在做過多的贅述。
習題 3: 數字和數學計算
學習目標:瞭解Python中常用的算術運算符,並瞭解運算符之間的先後運算順序
在各大常用的電腦語言中都有常見的算術運算符,Python也是大同小異,下麵我們來瞭解一下Python中常見的算術運算符:
算術運算符
以下假設變數x = 10 ,y = 20
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 - 兩個對象相加 | x+y = 30 |
- | 減 - 是一個數減去另一個數 | x-y = -10或y-x = 10 |
* | 乘 - 兩個數相乘或是返回一個被重覆若幹次的字元串 | x*y = 200 |
/ | 除 - x除以y | x/y = 0,y/x = 2 |
% | 取餘 - 返回除法的餘數 | x%y = 10,y%x = 0 |
** | 冪 - 返回x的y次冪 | x**y = 1(20個0) |
// | 取整除 - 返回商的整數部分(向下取整) | 91 // 2 = 4, -9 // 2 = -5 |
Python算術運算符的實例操作:
#! -*- coding=utf-8 -*-
x = 10
y = 20
print "x + y =", x + y
print "x - y =", x - y,",", "y - x =", y - x
print "x * y =", x * y
print "x / y =", x / y,",", "y / x =", y / x
print "x ** y =", x ** y
print "x // y =", x // y,",", "y // x =", y // x
print "9 // 2 =", 9 // 2,",", "-9 // 2=", -9 // 2
輸出結果為:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-1.py"
x + y = 30
x - y = -10 , y - x = 10
x * y = 200
x / y = 0 , y / x = 2
x ** y = 100000000000000000000
x // y = 0 , y // x = 2
9 // 2 = 4 , -9 // 2= -5
習題二中的練習代碼是:
print "I will now count my checkens:"
print "Hen", 25 + 30 / 6
print "Roosters", 100 - 25 * 3 % 4
print "Now i will count the eggs:"
print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
print "Is it true that (3 + 2 < 5 -7)?"
print 3 + 2 < 5 -7
print "What is 3 + 2?=", 3 + 2
print "What is 5 - 7?", 5-7
print "Oh, that's why it's False "
print "How about some more."
print "Is it greater? ", 5 > -2
print "Is it greater or equal? ", 5 >= -2
print "Is it less or equal? ", 5 <= 2
上述練習代碼的運算結果為:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exercise3.py"
I will now count my checkens:
Hen 30
Roosters 97
Now i will count the eggs:
7
Is it true that (3 + 2 < 5 -7)?
False
What is 3 + 2?= 5
What is 5 - 7? -2
Oh, that's why it's False
How about some more.
Is it greater? True
Is it greater or equal? True
Is it less or equal? False
加分習題:
- 使用 # 在代碼每一行的前一行為自己寫一個註解,說明一下這一行的作用。
- 自己找個想要計算的東西,寫一個 .py 文件把它計算出來。
- 有沒有發現計算結果是”錯”的呢?計算結果只有整數,沒有小數部分。研究一下這
是為什麼,搜索一下“浮點數(floating point number)”是什麼東西。 - 使用浮點數重寫一遍 ex3.py ,讓它的計算結果更準確(提示: 20.0 是一個浮點數)。
我的答案:
1、使用 # 在代碼每一行的前一行為自己寫一個註解,說明一下這一行的作用
# 列印輸出:I will now count my checkens-我將要數我有多少只雞
print "I will now count my checkens:"
# 列印輸出:計算母雞的數量,為30只
print "Hen", 25 + 30 / 6
# 列印輸出:計算公雞的數量,為97只
print "Roosters", 100 - 25 * 3 % 4
# 列印輸出:Now i will count the eggs-現在我將要去數雞蛋
print "Now i will count the eggs:"
# 列印輸出:雞蛋的數量為7個
print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
# 列印輸出:Is it true that (3 + 2 < 5 -7)? - (3 + 2 < 5 -7)是否正確呢?
print "Is it true that (3 + 2 < 5 -7)?"
# 列印輸出:False - 3 + 2的運算結果比 5 -7 的運算結果小是不正確的
print 3 + 2 < 5 -7
# 列印輸出:What is 3 + 2?=5 - 3+2的計算結果是5
print "What is 3 + 2?=", 3 + 2
# 列印輸出:What is 5 - 7?-2 - 5-7的運算結果是-2
print "What is 5 - 7?", 5-7
# 列印輸出:Oh, that's why it's False - 為什麼那是錯誤的呢
print "Oh, that's why it's False "
# 列印輸出:How about some more. - 那大概是有多少呢?
print "How about some more."
# 列印輸出:Is it greater?True/False - 進行兩個數的大小比較
print "Is it greater? ", 5 > -2
print "Is it greater or equal? ", 5 >= -2
print "Is it less or equal? ", 5 <= 2
2、計算下載時間
題目:文件大小是1G,下載帶寬是10M下水管,計算下載用幾分鐘?
解釋說明:
(4 * 1024):4M 的準確帶寬 = 4096 Kb/s。
/ 8:換算帶寬 Kb/s 到 KB/s
1G = 1024000 KB
最後的運算結果是33.33333尾數3無限迴圈的,但是最後變成了6?(黑人問號),具體原因我們見第3題。
3、有沒有發現計算結果是”錯”的呢?計算結果只有整數,沒有小數部分。研究一下這是為什麼,搜索一下“浮點數(floating point number)”是什麼東西。?
正常情況下,5除以2結果應該是2.5才對,怎麼上面在Python 2.7版本中是2呢?
註意:Python2.x 里,整數除整數,只能得出整數。如果要得到小數部分把其中一個數改成浮點數
則上面的運算為:
在Python的整數除法中,即使除不盡,結果仍然是整數,餘數直接被扔掉
註:在Python 3.5中預設是可以顯示浮點數的
4、使用浮點數重寫一遍 ex3.py ,讓它的計算結果更準確(提示: 20.0 是一個浮點數)
將上面需要計算的兩個數中的一個定義為浮點數類型就可以,float(x),這樣計算的結果就是浮點數
總結:
習題2主要是是認識和掌握常見的Python中的算術運算符,知道整數和浮點數之間的區別,瞭解Python 2.7和Python 3.5中預設精度。瞭解整除和取餘之間的區別。
擴展:
Python比較運算符
以下假設變數x = 11 ,y = 20
所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變數True和False等價
運算符 | 描述 | 實例 |
---|---|---|
== | 等於 - 比較對象是否相等 | (x == y) 返回 False |
!= | 不等於 - 比較兩個對象是否不相等 | (x != y)返回True |
<> | 不等於 - 比較兩個對象是否不相等 | (x <> y) 返回 True |
> | 大於 - 返回x是否大於y | (x > y) 返回 False |
< | 小於 - 返回x是否小於y。 | (x < y) 返回 True |
>= | 大於等於 - 返回x是否大於等於y | (x >= y) 返回 False |
<= | 小於等於 - 返回x是否小於等於y | (x <= y) 返回 True |
註:<> 運算符類似於 運算符!=
Python比較運算符的實例代碼演示:
x = 11
y = 20
print "x == y", "運算結果是", x == y
print "x != y", "運算結果是", x != y
print "x <> y", "運算結果是", x <> y
print "x > y", "運算結果是", x > y
print "x < y", "運算結果是", x < y
print "x >= y", "運算結果是", x >= y
print "x <= y", "運算結果是", x <= y
上述代碼的運行結果為:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-3.py"
x == y 運算結果是 False
x != y 運算結果是 True
x <> y 運算結果是 True
x > y 運算結果是 False
x < y 運算結果是 True
x >= y 運算結果是 False
x <= y 運算結果是 True
Python賦值運算符
以下假設變數x = 11 ,y = 20
運算符 | 描述 | 實例 |
---|---|---|
= | 簡單的賦值運算符 | z = x + y 將x + y的運算結果賦值為z |
+= | 加法賦值運算符 | z += x 等效於 z = z + x |
-= | 減法賦值運算符 | z -= x 等效於 z = z - x |
*= | 乘法賦值運算符 | z = x 等效於 z = z x |
/= | 除法賦值運算符 | z /= x 等效於 z = z / x |
%= | 取模賦值運算符 | z %= x 等效於 z = z % x |
**= | 冪賦值運算符 | z ** = x 等效於 z = z ** x |
//= | 取整除賦值運算符 | z //= x 等效於 z = z // x |
Python賦值運算符的實例代碼演示:
x = 11
y = 20
z = 0
print "z = x + y", "運算結果為z1=", x+y
z += x
print "z += x ", "運算結果為z2=",z
z -= y
print "z -= x ", "運算結果為z3=",z
z *= x
print "z *= x ", "運算結果為z4=",z
z /= x
print "z /= x ", "運算結果為z5=",z
z %= x
print "z %= x ", "運算結果為z6=",z
z **= x
print "z **= x ", "運算結果為z7=",z
z //= x
print "z //= x ", "運算結果為z8=",z
上述代碼的運行結果為:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-2"
z = x + y 運算結果為z1= 31
z += x 運算結果為z2= 21
z -= x 運算結果為z3= 11
z *= x 運算結果為z4= 231
z /= x 運算結果為z5= 11
z %= x 運算結果為z6= 11
z **= x 運算結果為z7= 7400249944258160101211
z //= x 運算結果為z8= 352392854488483814343
Python位運算符
位運算符是將數字化為二進位來進行計算的
以下假設變數x = 60 ,y = 13 ,二進位格式如下:
x = 0011 1100
y = 0000 1101
-----------------
x & y = 0000 1100
x | y = 0011 1101
x ^ y = 0011 0001
~x = 1100 0011
運算符 | 描述 | 實例 |
---|---|---|
& | 按位與運算符:參與運算的兩個值,如果兩個對應位都為1,則該位的結果為1,否則為0 | (x & y) 輸出結果 12 ,二進位解釋: 0000 1100 |
| | 按位或運算符:參與運算的兩個值只要對應的兩個個二進位有一個為1時,結果位就為1 | (x | y )輸出結果 61 ,二進位解釋: 0011 1101 |
^ | 按位異或運算符:當兩對應的二進位相異時,結果為1 | (x ^ y) 輸出結果 49 ,二進位解釋: 0011 0001 |
~ | 按位取反運算符:對數據的每個二進位位取反,即把1變為0,把0變為1 。~x 類似於 -x-1 | (~x ) 輸出結果 -61 ,二進位解釋: 1100 0011,在一個有符號二進位數的補碼形式。 |
<< | 左移動運算符:運算數的各二進位全部左移若幹位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0 | x << 2 輸出結果 240 ,二進位解釋: 1111 0000 |
>> | 右移動運算符:把">>"左邊的運算數的各二進位全部右移若幹位,>> 右邊的數字指定了移動的位數 | x >> 2 輸出結果 15 ,二進位解釋: 0000 1111 |
Python位運算符的實例代碼演示:
x = 60
y = 13
print "x & y", "運算結果是", x & y
print "x | y", "運算結果是", x | y
print "x ^ y", "運算結果是", x ^ y
print " ~x ", "運算結果是", ~x
print "x << 2", "運算結果是", x << 2
print "x >> 2", "運算結果是", x >> 2
上述代碼的運行結果為:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-4.py"
x & y 運算結果是 12
x | y 運算結果是 61
x ^ y 運算結果是 49
~x 運算結果是 -61
x << 2 運算結果是 240
x >> 2 運算結果是 15
Python邏輯運算符
以下假設變數x = 10 ,y = 20
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值 | (x and y) 返回 20 |
or | x or y | 布爾"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值 | (x or y) 返回 10 |
not | not x | 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True | not(x and y) 返回 False |
Python邏輯運算符的實例代碼演示:
x = 10
y = 20
print "x and y", "運算結果是", x and y
print "x or y", "運算結果是", x or y
print "not(x and y)", "運算結果是", not(x and y)
上述代碼的運行結果為:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-5.py"
x and y 運算結果是 20
x or y 運算結果是 10
not(x and y) 運算結果是 False
Python成員運算符
運算符 | 描述 | 實例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否則返回 False | x 在 y 序列中 , 如果 x 在 y 序列中返回 True |
not in | 如果在指定的序列中沒有找到值返回 True,否則返回 False | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
Python運算優先順序
運算符 | 描述 |
---|---|
** | 指數 (最高優先順序) |
~ + - | 按位翻轉, 一元加號和減號 (最後兩個的方法名為 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法減法 |
>> << | 右移,左移運算符 |
& | 位 'AND' |
^ | | 位運算符 |
<= < > >= | 比較運算符 |
<> == != | 等於運算符 |
= %= /= //= -= += *= **= | 賦值運算符 |
in not in | 成員運算符 |
not and or | 邏輯運算符 |
具體實例運用還得在以後具體環境中具體分析。
參考鏈接:
http://www.runoob.com/python/python-operators.html
https://blog.csdn.net/aaazz47/article/details/79431678