Python進擊-基本語法結構
來自專欄 Python的進擊
- 基本語法
- Hello World
- 代碼注釋
- 關鍵字
- 輸入輸出
- 基本類型
- 數據類型
- 變數、常量
- 變數
- 變數賦值
- 變數命名
- 變數的作用域
- 常量
- 字元串與編碼
- 字元轉義
- 字元編碼
- 字元串操作
- 運算符與表達式
- 運算符
- 表達式
- 總結
- 練習
- 參考:
基本語法
從本章開始,我們開始學習Python的基本語法。
Hello World
在上一章,我們python環境已經安裝完畢,也選擇好了合適自己的編輯器,現在我們開始進入python的編程世界。
讓我們來看一個python的簡單程序,HelloWorld
。
解釋器運行
打開系統終端輸入python
,啟動python解釋器,錄入如下代碼,回車觀察返回值。
$ python3Python 3.6.5 (default, Mar 30 2018, 06:42:10)[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> print(Hello world!)
代碼返回如下:
Hello world!
下面我們來解釋下這段代碼:
- 1、
>>>
python的交互環境的提示符 - 2、
print
python 內置的列印方法,它會列印括弧中的字元串。
代碼文件運行
我們可以把以上代碼保存成python的腳本文件,並保存為hello.py
, python的代碼文件是以py
作為擴展名的。下面我們來執行它,在我們的系統終端執行如下命令:
$python hello.py
代碼返回如下:
Hello world!你好,世界!
到這,我們知道了如何在python 解釋器和代碼文件中運行代碼。
代碼注釋
定義
我們在編寫代碼的時候,往往需要添加一些說明以幫助我們來理解代碼邏輯,在代碼執行的時候,這些說明不會被執行。這些說明叫做注釋
。Python中的注釋,使用井號、單引號或雙引號標識,如下:
# 單行注釋?我是多行注釋我是多行注釋?"""我是多行注釋我是多行注釋"""
注釋常用場景
- 腳本文本的開頭,說明腳本主要功能。
- 代碼中,說明代碼功能。
- 函數和方法名(是python中的語法結構,後邊會講到)下,作為說明出現。
關鍵字
程序設計中,預留了一些標識符號供語言本身或系統使用,這些標識符被稱為關鍵字
。每個關鍵字都有自己的含義,在python中可通過以下方式查看關鍵字:
>>> import keyword>>> keyword.kwlist[and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield]
我們可以通過如下方法判斷字元串是否為關鍵字:
>>> keyword.iskeyword(and)True>>> keyword.iskeyword(have)False
關鍵字不可作為變數的名稱使用。
輸入輸出
計算機要處理任務,則需要與人交互。那麼python中的輸入輸出是如何實現的呢?
python2 中提供了輸入函數 input
、raw_input
來輸入,函數print
來輸出。python3中raw_input
函數去掉了,功能合併到input
。
輸入
先來看下,python2 中raw_input
。
>>> raw_input(請輸入:)>>> raw_input(請輸入:)請輸入:123123>>> raw_input(請輸入:)請輸入:abcabc
可見 raw_input
返回我們輸入的數據為一個字元串返回。
再來看下 input
,它除了支持字元串還支持表達式,如下:
>>> input(請輸入:)請輸入:1+23>>>
可見它輸出了表達式的值,也就是說它執行了表達式。試想,如果這裡放一個破壞我們系統執行的表達式,我們系統便會受到安全威脅。在人們衡量後,在python3中,決定去除該函數,並將原來的raw_input
改名為 input
。
輸出
python2 中使用print
語句來輸出,python3中則改為了 print
函數。
>>> print(你好, end=,)你好,>>> a = 世界>>> print(你好,%s%a)你好,世界>>> print(你好, 世界)你好世界
語法說明:
end=
參數, 傳遞給參數的字元將追加到列印字元串結尾,當省略時默認為回車換行。print
函數可傳入多個字元串來列印,當傳入多個時,會自動合併鏈接。print
函數常被用來在調試代碼時,列印變數使用。
基本類型
數據類型
變數中儲存數據的類型可以是多種多樣的,我們把變數中存儲數據的類型叫數據類型
。而python 中常用的數據類型,有這麼幾種:
整型(int)
: Python3中可以處理任意大小的整數(Python 2.x中有int和long兩種類型的整數,但這種區分對Python來說意義不大,在python中內存分配是自動的,用戶並不關心這些細節,反而給用戶無限大的使用空間更好,因此在Python 3.x中整數只有int這一種了),而且支持二進位(如0b100,換算成十進位是4)、八進位(如0o100,換算成十進位是64)、十進位(100)和十六進位(0x100,換算成十進位是256)的表示法。複數型(complex)
:形如3+5j,跟數學上的複數表示一樣,唯一不同的是虛部的i換成了j。浮點型(float)
:浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,浮點數除了數學寫法(如123.456)之外還支持科學計數法(如1.23456e2)。字元串型(str)
:字元串是以單引號或雙引號括起來的任意文本,比如hello和"hello",字元串還有原始字元串表示法、位元組字元串表示法、Unicode字元串表示法,而且可以書寫成多行的形式(用三個單引號或三個雙引號開頭,三個單引號或三個雙引號結尾)。布爾型(bool)
:布爾值只有True、False兩種值,要麼是True,要麼是False,在Python中,可以直接用True、False表示布爾值(請注意大小寫),也可以通過布爾運算計算出來(例如3 < 5會產生布爾值True,而2 == 1會產生布爾值False)。python中把None、0、 都視為False。空類型
:None
為空類型。
各數據類型之間是可以相互轉換的,可使用Python提供的內置函數:
- int():將一個數值或字元串轉換成整數,可以指定進位。
- float():將一個字元串轉換成浮點數。
- str():將指定的對象轉換成字元串形式,可以指定編碼。
另外2個字元轉化內置函數:
- chr():將整數轉換成該ASCII編碼對應的字元串(一個字元,如 chr(65) 返回為字元串 A )。
- ord():將字元串轉換成對應的ASCII編碼。
變數、常量
變數
變數
(英語:Variable,scalar),是內存中實際存在的數據或存儲器中存儲數據的一塊內存空間地址,變數的值可以被讀取和修改。
Python 中的變數是內存中保存數據的地址的一個別稱。變數是沒有類型的,變數對應的值對象是有類型的。變數的類型是跟著值對象走的。嚴格來說,類型是屬於對象的,而不是變數, 變數和對象是分離的,對象是內存中儲存數據的實體,變數則是指向對象的內存地址。
變數賦值
在Python 的語法中,變數無需聲明,可直接使用,區別於其他語言,有些語言的變數需要先聲明後使用。python中,使用像上邊代碼中的等號『=』來表示賦值
,即表示將等號右邊的數據賦值給左邊的變數,變數的類型有它存儲的數值來決定。
>>> a = 123>>> b = 123>>> c = True>>> print(type(a),type(b),type(c))(<type int>, <type str>, <type bool>)>>> d, e = 1,2
知識點:
- 我們可以使用內置函數
type
來查看變數的數據類型。 - 可同時給多個變數賦值
變數命名
變數的命令是一個重要的規則,好的命名可以增加代碼的可讀性,提高代碼的可維護性。python中變數的命名有如下要求:
- 只能使用數據、字母和下劃線,且只能以字母或下劃線開頭。
- 大小寫敏感,即區分大小寫。a和A 是2個變數名。
- 不能使用關鍵字及系統預留字重複。
說明:
- 系統預留字,及系統的函數及模塊的名字。
除了以上這些硬性規定外,變數命名還是比較寬鬆的。為了更好的處理命名問題,python 社區指定了一個開發規範 PEP8。其中除了命名規範外,還描述了其他一些語法的最佳實踐。它可作為我們日後編寫代碼及項目開發的規範使用,對我們提高代碼的質量有很大的好處。
變數的作用域
作用域,顧名思義,可以理解為在一定範圍內起作用。映射到我們的編碼中時,便是在一定的代碼範圍內有效。在編碼時,代碼分各種邏輯塊的,類似我們文章的段落,可以更好的理解閱讀分類。那麼在這些限定的範圍內,變數的有效性是有影響的。根據有效範圍作用域分為全局變數(Local)
和局部變數(Global)
。全局變數
是在整個程序系統或文件全局中有效的變數。局部變數
表示在一個代碼邏輯塊中有效的變數。全局和局部變數是相對的,如我們可以叫一個相對於文件來說的全局變數,但是在多個文件或者文件包中便成了局部變數。除了全局和局部變數,Python中還有以下作用域:
- E (Enclosing) 閉包函數外的函數中
- B (Built-in) 內建作用域
作用域以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包,稍後會講),再找不到就會去全局找,再者去內建中找。
常量
變數中存儲的數值是可以變動的,那麼有沒有不變的呢?答案是有的,如數學計算使用的PI
。我們經常把代碼中,存儲不變數據的變數稱之為常量
。可見,常量是一種特殊的變數。
字元串與編碼
上節我們談到變數有許多的數據類型,其中字元串類型比較複雜,這裡單獨講解下。
字元轉義
字元串,故名思意,是零個或多個字元組成的有限序列,以單引號或雙引號包裹。既然是以字元組成,那麼便包括單引號或雙引號自身,如下:
a = Im DeanWu!
我們在執行以上語句的時候會報錯:
>>> a = Im DeanWu! File "<stdin>", line 1 a = Im DeanWu! ^SyntaxError: invalid syntax
這是因為字元串中間的單引號把字元串給截斷了,當python解釋器執行到該單引號後,後邊的語法便報錯了。如何解決?這便需要進行轉義,所謂轉義,便是讓python解釋器解釋執行的時候,被轉義的字元不在表示原先的意思,而變為不解釋執行的字元串。Python中使用 進行轉義。上邊的語法可以寫成這樣:
a = Im DeanWu!
字元編碼
在計算機基礎部分,我們知道了計算機編碼相關知識,概括如下:
- ASCII 使用1個位元組,只支持英文;
- GB2312 使用2個位元組,支持6700+漢字;
- GBK GB2312的升級版,支持21000+漢字;
- Unicode編碼,使用2、3或4個位元組表示字元;
- UTF 編碼為Unicode編碼的一種可變長實現;
- 計算機內存中使用Unicode編碼處理,存儲和傳輸則使用UTF編碼。
接下來,我們看下Python中的編碼。Python2中的默認編碼為ASCII編碼
,Python3中使用的則是UTF-8編碼
。可使用如下命令查看:
import sys sys.getdefaultencoding()
在Python 編程中,編碼問題往往是新手的一個困擾,我們來深入展開說下這個問題。Python2和Python3的默認編碼是不一樣的,它們處理編碼方式也是不一樣。
Python2中的編碼
在 Python2中字元串類型有4種:str
、unicode
、basestring
和bytes
。
basestring
是一個基類(稍後會講到此概念,可暫時理解為父親或基礎即可),str
和unicode
類型在此基礎上構建。str
是Python設計之初的字元串類型,默認使用系統編碼。unicode
是了使Python支持Unicode編碼,在2.0版本之後添加的一種字元串類型。bytes
是位元組串,str
本身便是一個位元組串,那可認為bytes
是str
的一個別稱,使用和str
完全一致。
看一實例:
>>> a = 你好 # 使用系統編碼的str 類型>>> type(a)<type str>>>> print a你好>>> axe4xbdxa0xe5xa5xbd # 系統編碼為 utf-8的位元組碼,使用了3個位元組表示一個漢字;>>> ua = u你好 # unicode 編碼>>> type(ua)<type unicode>>>> print ua你好>>> uauu4f60u597d # unicode 編碼格式的你好,對應unicode代碼表中代碼>>> b = b你好 # bytes 類型的字元串>>> type(b) <type str>>>> print b你好>>> b xe4xbdxa0xe5xa5xbd # 使用3個位元組表示1個漢字,且位元組碼和str類型一樣;
知識點:
- Python 解釋器默認使用系統的編碼方式聲明變數。
- unicode類型以u開頭標識
- bytes 類型以 b 開頭標識
- str類型以16進位的ASCII位元組碼錶示,實際上是一個位元組串,回應了它的另一個名字bytes。
- unicode類型以unicode字元碼錶示,是真正的字元串。
str
與unicode
類型之間是可以相互轉化的,通過 encode
和decode
來實現。來看實例:
>>> a = 你好>>> a.decode(utf-8) # decode 解碼: str類型(UTF-8) --> unicode類型(Unicode)uu4f60u597d # 對應的unicode代碼>>> uauu4f60u597d>>> ua.encode(utf-8) # encode 編碼: unicode類型(Unicode) --> str類型(UTF-8)xe4xbdxa0xe5xa5xbd # utf-8的編碼的 str位元組串>>> a.decode(gbk) # 嘗試使用 gbk 解碼,結果出現亂碼uu6d63u72b2u30bd>>> print a.decode(gbk) 浣犲ソ>>> a.decode(gbk).encode(gbk) # 使用 gbk 解碼,再編碼,成功還原xe4xbdxa0xe5xa5xbd>>> print a.decode(gbk).encode(gbk)你好>>> a.decode(gbk).encode(utf-8) # 使用不同的編碼來解碼和編碼, 也出現亂碼xe6xb5xa3xe7x8axb2xe3x82xbd>>> print a.decode(gbk).encode(utf-8)浣犲ソ
知識點:
- 使用什麼編碼編碼,就需要使用什麼編碼解碼,否則會出現亂碼。
- 轉為
unicode
類型要decode解碼。 - 轉為
str
類型要encode編碼。 - 區分Unicode類型和Unicode編碼,Unicode編碼是一套編碼集,內容豐富,編碼內容涵蓋了世界各地的語言,實現方式有UTF-8、UTF-16、UTF-32;Unicode類型只是python字元串的一種類型,使用Unicode編碼作為其編碼格式,可經過各種編碼方式(UTF、GBK、ASCII)編碼成str類型字元或者叫bytes(位元組序列)類型供計算機使用。
- Unicode 編碼的兼容性,可作為其他編碼格式的轉碼的中間站。
上邊這些例子是直接在python解釋器中跑的代碼,而python代碼文件在執行時,有所不同,會受到文件編碼的影響。
文件的存儲是以二進位流的方式保存在硬碟上。當Python文件被執行時,這些文件會以二進位流的方式載入到內存中,然後按照Python的默認編碼方式解碼成相應的python代碼對應的unicode編碼的位元組碼來解釋執行。在python2中,默認編碼為ASCII碼,那麼當文件中有非ASCII碼時,這個解碼過程便會出錯。Python 為了解決這個問題,在Python 文件頭部增加了文件的編碼聲明,PEP236就是為這個問題而創建的改進意見。
Python 文件格式聲明如下:
# coding:utf-8
或
# -*- coding:utf-8 -*-
來看實例 coding_utf.py
:
# -*- coding:utf-8 -*- ?a = 你好print(a)print(type(a))?ua = u你好print(ua)print(type(ua))?
在命令行執行python coding_utf.py
, 返回如下:
你好<type str>你好<type unicode>
ok,沒有問題。來看下執行時都做了些什麼事:
- 1、python解釋器讀取文件頭部聲明的編碼,將其作為變數解碼時使用的編碼。
- 2、python讀取代碼,自動將非unicode編碼的變數解碼成unicode給計算機內存使用。
- 3、python解釋器執行代碼,列印utf-8編碼的a和unicode編碼的ua。
接下來,當我們把文件編碼和開頭標識改為GBK
後,再次執行:
???<type str>你好你好<type unicode>
大家看到第一個你好
成為亂碼,這是為什麼? 根據上邊的分析,列印時,a的編碼為gbk, ua的編碼為unicode。而我終端的編碼為utf-8,對gbk的不兼容,所以導致亂碼。同樣的代碼,當放到默認gbk編碼的windows終端中,則會輸出正常。
那麼有沒有辦法讓他輸出正常呢?有的,我們只要手動顯示的把它解碼成兼容的 unicode 編碼即可。
print(a.decode(gbk))
到這裡,總結以上說的問題,影響Python 字元編碼的地方主要有以下幾點:
- Python解釋器的默認編碼,python2中默認為ASCII。
- Python源文件文件聲明編碼及保存的編碼方式。
- 系統終端使用的編碼,會影響python文件執行時的編碼方式。
- 操作系統的編碼,會影響終端的編碼方式。
Python3中編碼
在python2中,編碼問題有2個大的問題:
- 使用 ASCII 作為默認編碼方式,不能很好的支持非ASCII碼字元;
- 將字元串分為了
str
和unicode
兩種類型,讓大家容易混淆;
Python3 對以上問題做了很好的修正。Python3 默認編碼改為了 UTF-8
,對於非ASCII碼支持更強大。其次,Python3 合併了str
和 unicode
類型,統一為 str
類型。使用 bytes
類型來表示位元組類型。這樣很好的區分了字元串和位元組串,str
即為字元串,bytes
為位元組串或叫二進位位元組。
看下面的例子:
>>> a = 你好 # utf-8 編碼的str類型>>> type(a)<class str> >>> print(a)你好>>> repr(a)"你好">>> a # 顯示為原字元串你好>>> ua = u你好>>> type(ua) # unicode 編碼的 str類型<class str>>>> print(ua)你好>>> repr(ua)"你好">>> ua # 可以看到,字元串直接顯示並沒有顯示unicode編碼你好>>> a.decode(utf-8) # unicode 字元串已不能再解碼了Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: str object has no attribute decode>>> a.encode(utf-8) # 顯示為位元組串bxe4xbdxa0xe5xa5xbd>>> e = Test>>> eTest>>> e.encode(utf-8) # 顯示為原字元串bTest
知識點:
- 1、可以看到Unicode類型的字元串類型為 str,帶不帶u 是一樣的。
- 2、unicode 字元串編碼成utf-8格式的位元組碼,前邊帶 b 說明是bytes 位元組類型。
- 3、在Python3中,所有unicode編碼顯示均為原字元串,非 unicode 編碼的 非ASCII碼範圍的字元 顯示均為位元組串。
字元串操作
字元串中的運算符
- Python 中字元串可以直接使用 "+" 鏈接。
>>> a = 你好>>> b = 世界>>> print(a+b)你好世界
- "*2" 標識2次重複輸出
>>> print(a*2)你好你好
len
內建函數,可以獲取字元串的位元組長度
>>> a = 你好>>> a xe4xbdxa0xe5xa5xbd # utf-8 編碼,3個位元組代表一個漢字。print(len(a))>>> e = hello>>> print(len(e))5
[]
索引,可通過下標的方式來獲取字元串的某個位元組,下標是從 0 開始的,最後一個為字元串長度-1或-1。
>>> print(a)helloworld>>> a[2]l>>> a[0]h>>> a[9]d>>> a[-1]d
[:]
切片,可使用字元串下標來截取字元串
>>> a = helloworld>>> a[0:5]hello
> 說明:
- 下標從零開始
- 開始可以省略,默認為0
- 結束可以省略,默認為-1
in
判斷某變數是否在字元串中。
>>> a = helloworld>>> hello in aTrue
格式化
有時候,我們要將多個變數組成一個我們需要的字元串來使用,這個過程叫做格式化
。Python中格式化的方式有兩種,一種使用『%』 ,一種是使用format
內建函數。
- 使用
%
格式化,格式化變數,依次由左向右對應。
>>> c = %s,%s!%(a,b) >>> print(c)你好,世界!
使用 %
來格式化時,%s
中的s
叫做佔位符
,不同的類型需要不同的佔位符
,如下:
佔位符類型%d整數%f浮點數%s字元串%x十六進位整數
- 使用
format
格式化,格式化變數,由左向右根據大括弧的序號對應。
>>> d = {1},{0}.format(世界,你好)>>> print(d)你好,世界
常用方法
可使用內建函數dir
查看某對象的方法:
>>> dir(a)[__add__, __class__, __contains__, __delattr__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __getnewargs__, __getslice__, __gt__, __hash__, __init__, __le__, __len__, __lt__, __mod__, __mul__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __rmod__, __rmul__, __setattr__, __sizeof__, __str__, __subclasshook__, _formatter_field_name_split, _formatter_parser, capitalize, center, count, decode, encode, endswith, expandtabs, find, format, index, isalnum, isalpha, isdigit, islower, isspace, istitle, isupper, join, ljust, lower, lstrip, partition, replace, rfind, rindex, rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill]>>>
endswith(『』)
是否以某字元串結尾,是則返回True
,否則返回False
;startswith()
是否以某字元串開始,是則返回True
,否則返回False
;split()
分隔字元串,返回一個列表(python高級數據結構,稍後講解)。lower()
轉為小寫。upper()
轉為大寫。strip()
2側去除某字元串。lstrip()
左側去除某字元串。rstrip()
右側去除某字元串。join()
以某字元串為連接符,合併某列表。ljust(int)
左對齊,並使用空格填充至指定長度的新字元串rjust(int)
右對齊,並使用空格填充至指定長度的新字元串
運算符與表達式
在編程世界中的表達式和我們數學上的表達式有些類似,都是一種句法,此處意義更純粹,有運算符和操作數組成。例如:2+3
,其中像+
類似的符號即為運算符
,可通過它對操作數做相應操作。2和3 即為操作數。
運算符
運算符,顧名思義,可以通過它對一些變數做運算
處理。此處的運算除了簡單的四則運算,還包括比較、賦值等複雜操作。Python中運算符主要包括以下幾種:
- 算數運算符
- 比較運算符
- 邏輯運算符
- 賦值運算符
- 位運算符
- 成員運算符
- 身份運算符
下面我們一一來看。
算數運算符
算數運算符,主要對程序中的變數做四則運算使用。主要包含如下運算符:
比較運算符
比較運算符,用來比較變數是否相等,返回置為布爾類型。主要包含以下運算符:
注意:
- python2中運行不同類型的變數作比較,比較時會自動做類型轉化,由簡單類型向複雜類型轉變。
- python3隻允許同類型變數比較。
邏輯運算符
邏輯運算符,將變數按一定邏輯組合成一個新的表達式,該表達式返回一個布爾類型的值。常常用來作為判斷條件時間,判斷組合的新表達式是否成立。邏輯運算符主要包含以下:
賦值運算符
賦值運算符,即將某個值賦給默一遍量的運算符。主要包含如下:
注意:
//=
與/=
在python2中都為取整除法
位運算符
位運算符,是針對二進位數據的一種位元組位的運算,主要包含以下符號:
成員運算符
成員運算符,判斷某變數是否包含另一變數。主要包含以下符號:
身份運算符
身份運算符,判斷是否2個變數的值及引用的內存地址是否一樣。
注意:
- 與比較運算符
==
比較,==
為值相等即可,內存引用地址可不同;is
則為值和內存引用地址均相同。
運算符優先順序
各運算符按照優先順序由高到低的順序排列如下:
表達式
前邊說過,表達式是一種句法,有運算符
和操作數
組成。下面我們來看一個例子:
# -*- coding:utf-8 -*- ?length = 10width = 5area = length*widthprint(area)
本例子,使用表達式計算了長方形的面積。變數length
表示長方形的長,變數width
表示長方形的寬,使用算數運算符*
,利用表達式進行了乘法計算。通過賦值運算符=
將表達式的值賦值給了變數 area
。這個過程中,表達式在其中起了核心邏輯的作用。這個簡單的程序也映射了我們平時的編碼過程,表達式在其中起了至關重要的作用,我們要善加利用。
總結
到此,我們把Python的基本語法和數據結構過了一遍。那我們來總結下,我們都學到了什麼:
- 1、Python的基本語法:變數、常量、基本數據類型、字元串和編碼、運算符與表達式;
這些只是基本語法的組成元素。在程序運行時,可能會有多種情況,需要對這些結構做判斷或者需要按順序讀取列表的全部元素,那麼這個時候便需要邏輯處理結構。下一章,我們來講解Python中的邏輯處理的控制流語法。
練習
- 1、如何檢查一個字元串是否以某個字元串開頭或結尾?
Hello.startswith(H)Hello.endswith(o)
- 2、你想通過某種對齊方式來格式化字元串?
>>> text = Hello World>>> text.ljust(20)Hello World >>> text.rjust(20) Hello World>>> text.center(20) Hello World >>>
- 3、華氏溫度轉攝氏溫度。
"""將華氏溫度轉換為攝氏溫度公式:F = 1.8C + 32"""?f = float(input(請輸入華氏溫度: ))c = (f - 32) / 1.8print(%.1f華氏度 = %.1f攝氏度 % (f, c))?
- 4、輸入圓的半徑計算計算周長和面積。
"""輸入半徑計算圓的周長和面積"""import math?radius = float(input(請輸入圓的半徑: ))perimeter = 2 * math.pi * radiusarea = math.pi * radius * radiusprint(周長: %.2f % perimeter)print(面積: %.2f % area)?
- 5、輸入年份判斷是不是閏年。
"""輸入年份 如果是閏年輸出True 否則輸出False"""?year = int(input(請輸入年份: ))# 如果代碼太長寫成一行不便於閱讀 可以使用或()折行is_leap = (year % 4 == 0 and year % 100 != 0 or year % 400 == 0)print(is_leap)
參考:
- https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/Day02/%E8%AF%AD%E8%A8%80%E5%85%83%E7%B4%A0.md
- http://www.runoob.com/python/python-basic-syntax.html
- python 之路,致那些年,我們依然沒搞明白的編碼
- 熟悉又陌生的字元編碼
推薦閱讀: