python變量和運算

 本文收錄在Python從入門到精通系列文章系列html

1. 指令和程序

計算機的硬件系統一般由五大部件構成,包括:運算器、控制器、存儲器、輸入設備和輸出設備程序員

其中,運算器和控制器放在一塊兒就是咱們一般所說的中央處理器,它的功能是執行各類運算和控制指令以及處理計算機軟件中的數據。咱們一般所說的程序實際上就是指令的集合,咱們程序就是將一系列的指令按照某種方式組織到一塊兒,而後經過這些指令去控制計算機作咱們想讓它作的事情。ide

今天咱們大多數時候使用的計算機,雖然它們的元器件作工愈來愈精密,處理能力愈來愈強大,但究其本質來講仍然屬於·諾依曼結構的計算機。·諾依曼結構有兩個關鍵點,一是指出要將存儲設備與中央處理器分開,二是提出了將數據以二進制方式編碼函數

二進制是一種逢二進一的計數法,跟咱們人類使用的逢十進一的計數法沒有實質性的區別,人類由於有十根手指因此使用了十進制(由於在數數時十根手指用完以後就只能進位了,固然凡事都有例外,瑪雅人多是由於終年光着腳的緣由把腳趾頭也算上了,因而他們使用了二十進制的計數法,在這種計數法的指導下瑪雅人的歷法就與咱們日常使用的歷法不同,而按照瑪雅人的歷法,2012年是上一個所謂的太陽紀的最後一年,而2013年則是新的太陽紀的開始,後來這件事情被以訛傳訛的方式誤傳爲」2012年是瑪雅人預言的世界末日這種荒誕的說法,今天咱們能夠大膽的猜想,瑪雅文明之因此發展緩慢估計也與使用了二十進制有關)。測試

對於計算機來講,二進制在物理器件上來講是最容易實現的(高電壓表示1,低電壓表示0),因而在·諾依曼結構的計算機都使用了二進制。雖然咱們並不須要每一個程序員都可以使用二進制的思惟方式來工做,可是瞭解二進制以及它與咱們生活中的十進制之間的轉換關係,以及二進制與八進制和十六進制的轉換關係仍是有必要的。若是你對這一點不熟悉,能夠自行使用維基百科或者百度百科科普一下。編碼

    提示:近期關於量子計算機的研究已經被推倒了風口浪尖,量子計算機基於量子力學進行運算,使用量子瞬移的方式來傳遞信息。20186月,Intel宣佈開發出新款量子芯片並經過了在接近絕對零度環境下的測試;20191月,IBM向全世界發佈了首款商業化量子計算機。spa

 

2. 變量和類型

在程序設計中,變量是一種存儲數據的載體。計算機中的變量是實際存在的數據或者說是存儲器中存儲數據的一塊內存空間變量的值能夠被讀取和修改,這是全部計算和控制的基礎。設計

計算機能處理的數據有不少種類型,除了數值以外還能夠處理文本、圖形、音頻、視頻等各類各樣的數據,那麼不一樣的數據就須要定義不一樣的存儲類型。Python中的數據類型不少,並且也容許咱們自定義新的數據類型(這一點在後面會講到),咱們先介紹幾種經常使用的數據類型。code

  • 整型:Python中能夠處理任意大小的整數(Python 2.x中有int和long兩種類型的整數,但這種區分對Python來講意義不大,所以在Python 3.x中整數只有int這一種了),並且支持二進制(如0b100,換算成十進制是4)、八進制(如0o100,換算成十進制是64)、十進制(100)和十六進制(0x100,換算成十進制是256)的表示法。
  • 浮點型:浮點數也就是小數,之因此稱爲浮點數,是由於按照科學記數法表示時,一個浮點數的小數點位置是可變的,浮點數除了數學寫法(如123.456)以外還支持科學計數法(如1.23456e2)。
  • 字符串型:字符串是以單引號或雙引號括起來的任意文本,好比'hello'和"hello",字符串還有原始字符串表示法、字節字符串表示法、Unicode字符串表示法,並且能夠書寫成多行的形式(用三個單引號或三個雙引號開頭,三個單引號或三個雙引號結尾)。
  • 布爾型:布爾值只有TrueFalse兩種值,要麼是True,要麼是False,在Python中,能夠直接用True、False表示布爾值(請注意大小寫),也能夠經過布爾運算計算出來(例如3 < 5會產生布爾值True,而2 == 1會產生布爾值False)。
  • 複數型:形如3+5j,跟數學上的複數表示同樣,惟一不一樣的是虛部的i換成了j。實際上,這個類型並不能算做經常使用類型,你們瞭解下就能夠了。

 

2.1 變量命名

對於每一個變量咱們須要給它取一個名字,就如同咱們每一個人都有屬於本身的響亮的名字同樣。在Python中,變量命名須要遵循如下這些必須遵照硬性規則和強烈建議遵照的非硬性規則。orm

l  硬性規則:

n  變量名由字母(廣義的Unicode字符,不包括特殊字符)、數字和下劃線構成,數字不能開頭

n  大小寫敏感(大寫的a和小寫的A是兩個不一樣的變量)。

n  不要跟關鍵字(有特殊含義的單詞,後面會講到)和系統保留字(如函數、模塊等的名字)衝突。

l  PEP 8要求:

n  用小寫字母拼寫,多個單詞用下劃線鏈接。

n  受保護的實例屬性用單個下劃線開頭(後面會講到)。

n  私有的實例屬性用兩個下劃線開頭(後面會講到)。

固然,做爲一個專業的程序員,給變量(事實上應該是全部的標識符)命名時作到見名知意也是很是重要的。

 

2.2 變量的使用

下面經過幾個例子來講明變量的類型和變量使用。

01-算數運算

"""
使用變量保存數據並進行算術運算

Version: 0.1
Author: along
"""

a = 21
b = 12
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a ** b)

 注:Python算術運算符

運算符

描述

實例

+

- 兩個對象相加

a + b 輸出結果 33

-

- 獲得負數或是一個數減去另外一個數

a - b 輸出結果 9

*

- 兩個數相乘或是返回一個被重複若干次的字符串

a * b 輸出結果 252

/

- x除以y

a / b 輸出結果 1.75

%

取模 - 返回除法的餘數

a % b 輸出結果 9

**

- 返回xy次冪

a**b 2112次方結果爲

7355827511386641

//

取整除 - 返回商的整數部分(向下取整

a // b 輸出結果 1

 

02-變量類型的運用

Python中可使用type函數對變量的類型進行檢查。程序設計中函數的概念跟數學上函數的概念是一致的,數學上的函數相信你們並不陌生,它包括了函數名、自變量和因變量。若是暫時不理解這個概念也沒關係,咱們會在後續的章節中專門講解函數的定義和使用。

"""
使用type()檢查變量的類型

Version: 0.1
Author: along
"""

a = 100
b = 12.345
c = 1 + 5j
d = 'hello, world'
e = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'complex'>
print(type(d)) # <class 'str'>
print(type(e)) # <class 'bool'>

 可使用Python中內置的函數對變量類型進行轉換。

l  int():將一個數值或字符串轉換成整數,能夠指定進制。

l  float():將一個字符串轉換成浮點數。

l  str():將指定的對象轉換成字符串形式,能夠指定編碼。

l  chr():將整數轉換成該編碼對應的字符串(一個字符)。

l  ord():將字符串(一個字符)轉換成對應的編碼(整數)。

下面的代碼經過鍵盤輸入兩個整數來實現對兩個整數的算術運算。

"""
使用input()函數獲取鍵盤輸入(字符串)
使用int()函數將輸入的字符串轉換成整數
使用print()函數輸出帶佔位符的字符串

Version: 0.1
Author: along
"""
a = int(input('a = '))
b = int(input('b = '))
c = float(input('c = '))

print('%d + %d = %d' % (a, b, a + b))
print('%d - %f = %f' % (a, c, a - c))
print('%d * %f = %f' % (a, c, a * c))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))

說明:上面的print函數中輸出的字符串使用了佔位符語法,其中%d是整數的佔位符,%f是小數的佔位符,%%表示百分號(由於百分號表明了佔位符,因此帶佔位符的字符串中要表示百分號必須寫成%%),字符串以後的%後面跟的變量值會替換掉佔位符而後輸出到終端中,運行上面的程序,看看程序執行結果就明白啦。

 

3. 運算符

Python支持多種運算符,下表大體按照優先級從高到低的順序列出了全部的運算符,運算符的優先級指的是多個運算符同時出現時,先作什麼運算而後再作什麼運算。除了咱們以前已經用過的賦值運算符和算術運算符,咱們稍後會陸續講到其餘運算符的使用。

運算符

描述

[] [:]

下標,切片

**

指數

~ + -

按位取反, 正負號

* / % //

乘,除,模,整除

+ -

加,減

>> <<

右移,左移

&

按位與

^ |

按位異或,按位或

<= < > >=

小於等於,小於,大於,大於等於

== !=

等於,不等於

is is not

身份運算符

in not in

成員運算符

not or and

邏輯運算符

= += -= *= /= %= //= **= &= `

= ^= >>= <<=`

說明: 在實際開發中,若是搞不清楚運算符的優先級,可使用括號來確保運算的執行順序。

下面的例子演示了賦值運算符和複合賦值運算符的使用。

"""
賦值運算符和複合賦值運算符

Version: 0.1
Author: along
"""

a = 10
b = 5
a += b # 至關於:a = a + b
a *= a + 2 # 至關於:a = a * (a + 2)
print(a) # 想一想這裏會輸出什麼

 

下面的例子演示了比較運算符(關係運算符)、邏輯運算符和身份運算符的使用。

"""
比較、邏輯和算身份運算符的使用

Version: 0.1
Author: along
"""

flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0) # flag0 = True
print('flag1 =', flag1) # flag1 = True
print('flag2 =', flag2) # flag2 = False
print('flag3 =', flag3) # flag3 = False
print('flag4 =', flag4) # flag4 = True
print('flag5 =', flag5) # flag5 = False
print(flag1 is True) # True
print(flag2 is not False) # False

 註釋:一真或爲真,一假且爲假(背起上學的口令)

 

4. 練習

練習1:華氏溫度轉換爲攝氏溫度。

提示:華氏溫度到攝氏溫度的轉換公式爲:$C=(F - 32) \div 1.8$

參考答案:

"""
將華氏溫度轉換爲攝氏溫度

Version: 0.1
Author: along
"""

f = float(input('請輸入華氏溫度: '))
c = (f - 32) / 1.8
print('%.1f華氏度 = %.1f攝氏度' % (f, c))

注:%.1f 指取1個餘數的小數。

 

練習2:輸入圓的半徑,計算周長和麪積。

參考答案:

"""
輸入半徑計算圓的周長和麪積

Version: 0.1
Author: along
"""
import math
r=float(input('請輸入圓的半徑: '))

C=2 * math.pi * r
S=math.pi * r * r

print('周長爲: %.2f' % C )
print('面積爲: %.2f' % S )

 

練習3:輸入年份判斷是否是閏年。

參考答案:

"""
輸入年份 若是是閏年輸出True 不然輸出False

Version: 0.1
Author: along
"""

year = int(input('請輸入年份: '))
# 若是代碼太長寫成一行不便於閱讀 可使用\對代碼進行折行
is_leap = (year % 4 == 0 and year % 100 != 0) or \
           year % 400 == 0
print(is_leap)
相關文章
相關標籤/搜索