天天看點

python int 轉 16進制字元串 大寫_Python語言元素 - 兩毛錢De飛鴿

指令和程式

計算機的硬體系統通常由五大部件構成,包括:運算器、控制器、存儲器、輸入裝置和輸出裝置。其中,運算器和控制器放在一起就是我們通常所說的中央處理器,它的功能是執行各種運算和控制指令以及處理計算機軟體中的資料。我們通常所說的程式實際上就是指令的集合,我們程式就是将一系列的指令按照某種方式組織到一起,然後通過這些指令去控制計算機做我們想讓它做的事情。今天我們大多數時候使用的計算機,雖然它們的元器件做工越來越精密,處理能力越來越強大,但究其本質來說仍然屬于“馮·諾依曼結構”的計算機。“馮·諾依曼結構”有兩個關鍵點,一是指出要将儲存設備與中央處理器分開,二是提出了将資料以二進制方式編碼。二進制是一種“逢二進一”的計數法,跟我們人類使用的“逢十進一”的計數法沒有實質性的差別,人類因為有十根手指是以使用了十進制(因為在數數時十根手指用完之後就隻能進位了,當然凡事都有例外,瑪雅人可能是因為長年光着腳的原因把腳趾頭也算上了,于是他們使用了二十進制的計數法,在這種計數法的指導下瑪雅人的曆法就與我們平常使用的曆法不一樣,而按照瑪雅人的曆法,2012年是上一個所謂的“太陽紀”的最後一年,而2013年則是新的“太陽紀”的開始,後來這件事情被以訛傳訛的方式誤傳為”2012年是瑪雅人預言的世界末日“這種荒誕的說法,今天我們可以大膽的猜測,瑪雅文明之是以發展緩慢估計也與使用了二十進制有關)。對于計算機來說,二進制在實體器件上來說是最容易實作的(高電壓表示1,低電壓表示0),于是在“馮·諾依曼結構”的計算機都使用了二進制。雖然我們并不需要每個程式員都能夠使用二進制的思維方式來工作,但是了解二進制以及它與我們生活中的十進制之間的轉換關系,以及二進制與八進制和十六進制的轉換關系還是有必要的。如果你對這一點不熟悉,可以自行使用維基百科或者百度百科科普一下。

說明:近期關于量子計算機的研究已經被推倒了風口浪尖,量子計算機基于量子力學進行運算,使用量子瞬移的方式來傳遞資訊。2018年6月,Intel宣布開發出新款量子晶片并通過了在接近絕對零度環境下的測試;2019年,IBM和Google都推出了自己的量子計算機。

變量和類型

在程式設計中,變量是一種存儲資料的載體。計算機中的變量是實際存在的資料或者說是存儲器中存儲資料的一塊記憶體空間,變量的值可以被讀取和修改,這是所有計算和控制的基礎。計算機能處理的資料有很多種類型,除了數值之外還可以處理文本、圖形、音頻、視訊等各種各樣的資料,那麼不同的資料就需要定義不同的存儲類型。Python中的資料類型很多,而且也允許我們自定義新的資料類型(這一點在後面會講到),我們先介紹幾種常用的資料類型。

  • 整型:Python中可以處理任意大小的整數(Python 2.x中有

    int

    long

    兩種類型的整數,但這種區分對Python來說意義不大,是以在Python 3.x中整數隻有int這一種了),而且支援二進制(如

    0b100

    ,換算成十進制是4)、八進制(如

    0o100

    ,換算成十進制是64)、十進制(

    100

    )和十六進制(

    0x100

    ,換算成十進制是256)的表示法。
  • 浮點型:浮點數也就是小數,之是以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,浮點數除了數學寫法(如 )之外還支援科學計數法(如 )。
  • 字元串型:字元串是以單引号或雙引号括起來的任意文本,比如

    'hello'

    "hello"

    ,字元串還有原始字元串表示法、位元組字元串表示法、Unicode字元串表示法,而且可以書寫成多行的形式(用三個單引号或三個雙引号開頭,三個單引号或三個雙引号結尾)。
  • 布爾型:布爾值隻有

    True

    False

    兩種值,要麼是

    True

    ,要麼是

    False

    ,在Python中,可以直接用

    True

    False

    表示布爾值(請注意大小寫),也可以通過布爾運算計算出來(例如

    3 < 5

    會産生布爾值

    True

    ,而

    2 == 1

    會産生布爾值

    False

    )。
  • 複數型:形如

    3+5j

    ,跟數學上的複數表示一樣,唯一不同的是虛部的

    i

    換成了

    j

    。實際上,這個類型并不常用,大家了解一下就可以了。

變量命名

對于每個變量我們需要給它取一個名字,就如同我們每個人都有屬于自己的響亮的名字一樣。在Python中,變量命名需要遵循以下這些必須遵守硬性規則和強烈建議遵守的非硬性規則。

  • 硬性規則:
    • 變量名由字母(廣義的Unicode字元,不包括特殊字元)、數字和下劃線構成,數字不能開頭。
    • 大小寫敏感(大寫的

      a

      和小寫的

      A

      是兩個不同的變量)。
    • 不要跟關鍵字(有特殊含義的單詞,後面會講到)和系統保留字(如函數、子產品等的名字)沖突。
  • PEP 8要求:
    • 用小寫字母拼寫,多個單詞用下劃線連接配接。
    • 受保護的執行個體屬性用單個下劃線開頭(後面會講到)。
    • 私有的執行個體屬性用兩個下劃線開頭(後面會講到)。

當然,作為一個專業的程式員,給變量(事實上應該是所有的辨別符)命名時做到見名知意也是非常重要的。

變量的使用

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

在Python中可以使用

type

函數對變量的類型進行檢查。程式設計中函數的概念跟數學上函數的概念是一緻的,數學上的函數相信大家并不陌生,它包括了函數名、自變量和因變量。如果暫時不了解這個概念也不要緊,我們會在後續的章節中專門講解函數的定義和使用。

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

  • int()

    :将一個數值或字元串轉換成整數,可以指定進制。
  • float()

    :将一個字元串轉換成浮點數。
  • str()

    :将指定的對象轉換成字元串形式,可以指定編碼。
  • chr()

    :将整數轉換成該編碼對應的字元串(一個字元)。
  • ord()

    :将字元串(一個字元)轉換成對應的編碼(整數)。

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

1""" 2使用input()函數擷取鍵盤輸入(字元串)
 3使用int()函數将輸入的字元串轉換成整數
 4使用print()函數輸出帶占位符的字元串
 5 6""" 7 a = int(input('a = '))
 8 b = int(input('b = '))
 9print('%d + %d = %d' % (a, b, a + b))
10print('%d - %d = %d' % (a, b, a - b))
11print('%d * %d = %d' % (a, b, a * b))
12print('%d / %d = %f' % (a, b, a / b))
13print('%d // %d = %d' % (a, b, a // b))
14print('%d %% %d = %d' % (a, b, a % b))
15print('%d ** %d = %d' % (a, b, a ** b))
           

View Code

說明:上面的print函數中輸出的字元串使用了占位符文法,其中

%d

是整數的占位符,

%f

是小數的占位符,

%%

表示百分号(因為百分号代表了占位符,是以帶占位符的字元串中要表示百分号必須寫成

%%

),字元串之後的

%

後面跟的變量值會替換掉占位符然後輸出到終端中,運作上面的程式,看看程式執行結果就明白啦。

運算符

Python支援多種運算符,下表大緻按照優先級從高到低的順序列出了所有的運算符,運算符的優先級指的是多個運算符同時出現時,先做什麼運算然後再做什麼運算。除了我們之前已經用過的指派運算符和算術運算符,我們稍後會陸續講到其他運算符的使用。

運算符 描述

[]

[:]

下标,切片

**

指數

~

+

-

按位取反, 正負号

*

/

%

//

乘,除,模,整除

+

-

加,減

>>

<<

右移,左移

&

按位與

^

\|

按位異或,按位或

<=

<

>

>=

小于等于,小于,大于,大于等于

==

!=

等于,不等于

is

is not

身份運算符

in

not in

成員運算符

not

or

and

邏輯運算符

=

+=

-=

*=

/=

%=

//=

**=

&=

|=

^=

>>=

<<=

(複合)指派運算符
說明: 在實際開發中,如果搞不清楚運算符的優先級,可以使用括号來確定運算的執行順序。

指派運算符

指派運算符應該是最為常見的運算符,它的作用是将右邊的值賦給左邊的變量。下面的例子示範了指派運算符和複合指派運算符的使用。

比較運算符和邏輯運算符

比較運算符有的地方也稱為關系運算符,包括

==

!=

<

>

<=

>=

,我相信沒有什麼好解釋的,大家一看就能懂,唯一需要提醒的是比較相等用的是

==

,請注意這個地方是兩個等号,因為

=

是指派運算符,我們在上面剛剛講到過,

==

才是比較相等的比較運算符。比較運算符會産生布爾值,要麼是

True

要麼是

False

邏輯運算符有三個,分别是

and

or

not

and

字面意思是“而且”,是以

and

運算符會連接配接兩個布爾值,如果兩個布爾值都是

True

,那麼運算的結果就是

True

;左右兩邊的布爾值有一個是

False

,最終的運算結果就是

False

。相信大家已經想到了,如果

and

左邊的布爾值是

False

,不管右邊的布爾值是什麼,最終的結果都是

False

,是以在做運算的時候右邊的值會被跳過(短路處理),這也就意味着在

and

運算符左邊為

False

的情況下,右邊的表達式根本不會執行。

or

字面意思是“或者”,是以

or

運算符也會連接配接兩個布爾值,如果兩個布爾值有任意一個是

True

,那麼最終的結果就是

True

。當然,

or

運算符也是有短路功能的,在它左邊的布爾值為

True

的情況下,右邊的表達式根本不會執行。

not

運算符的後面會跟上一個布爾值,它的作用是得到與該布爾值相反的值,也就是說,後面的布爾值如果是

True

運算結果就是

False

,而後面的布爾值如果是

False

則運算結果就是

True

說明:比較運算符的優先級高于指派運算符,是以

flag0 = 1 == 1

先做

1 == 1

産生布爾值

True

,再将這個值指派給變量

flag0

print

函數可以輸出多個值,多個值之間可以用

,

進行分隔,輸出的内容之間預設以空格分開。

練習

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

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

參考答案:

說明:在使用

print

函數輸出時,也可以對字元串内容進行格式化處理,上面

print

函數中的字元串

%

是一個占位符,稍後會由一個

float

類型的變量值替換掉它。同理,如果字元串中有

%d

,後面可以用一個

int

類型的變量值替換掉它,而

%s

會被字元串的值替換掉。除了這種格式化字元串的方式外,還可以用下面的方式來格式化字元串,其中

{f:.1f}

{c:.1f}

可以先看成是

{f}

{c}

,表示輸出時會用變量

f

和變量

c

的值替換掉這兩個占位符,後面的

:.1f

表示這是一個浮點數,小數點後保留1位有效數字。
print(f'{f:.1f}華氏度 = {c:.1f}攝氏度')
           

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

參考答案:

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

參考答案:

說明:比較運算符會産生布爾值,而邏輯運算符

and

or

會對這些布爾值進行組合,最終也是得到一個布爾值,閏年輸出

True

,平年輸出

False