寫在前面的話
任何程式設計語言一開始都是從概念出發的,但各種程式設計語言之間的概念可能又會有差異,是以,老生常談,我們還是需要從新過一遍 Python 的概念,當然,如果你已經是老司機了,完全可以一晃而過,不過老司機應該也不會再看這些基礎。
另外,程式設計一開始都是枯燥的,原因有兩,一是沒有成就感,二是茫然自己怎麼把這些知識串聯起來。是以,希望有幸看到這裡的都能夠靜下心好好看下去,柳暗花明,需要的是時間。你也可以一蹴而就去看架構。可能比較聰明就能跟着做出一些東西出來。
但是,那樣的人終究是一隻紙老虎,一開始很吓人,但慢慢的越來越笨批,因為本身基礎沒打好,如何建出高樓大廈,最多也就是海市蜃樓。
這裡順便介紹一下計算機的程式和指令:
計算機由運算器,控制器,存儲器,輸入裝置,輸出裝置組成,運算器和控制器組成中央處理器,主要執行運算和控制指令處理資料。
代碼注釋
說明:所謂的注釋,就是這一段内容在程式運作的時候不起作用,但是在我們檢視代碼的時候能給我清清楚楚說明這段代碼的作用。
注意:注釋是代碼之本,對你也好,對别人也好,沒注釋的代碼就是垃圾,不管你寫的多漂亮。
在 Python 中,注意一般兩種,單行注釋和多行注釋。
單行注釋:# 注釋内容,井号
多行注釋:""" 注釋内容 """,三個雙引号
我們一般在注釋符号後面加個空格,這是 PEP8 的規範,也便于閱讀。例如:
# 這是一個單行注釋
"""
這是多行注釋
這是多行注釋
這是多行注釋
這是多行注釋
"""
在 Python 中有個特别的注釋:
# -*- coding: utf-8 -*-
指定編碼類型,寫在 py 檔案開始,推薦這句話成為大家以後寫代碼的規範。
輸出輸入
輸出:之前我們使用了 hello world demo,然後列印輸出了内容,這裡通過執行個體詳細講講 print 的用法:
print('列印字元串:')
print('hello world')
print('列印逗号作為分隔符的多個内容:')
print('My', 'name', 'is', 'Dylan', '!')
print('列印數字:')
print(100)
print('列印算術:')
print(100 + 100)
print('列印字元串拼接:')
print('100' + '100')
print('列印多次:')
print('A' * 10)
列印結果如圖:
注意:如果兩種不同類型的資料相 + 拼接,如 100 + '100',會報錯:TypeError: can only concatenate str (not "int") to str
輸入:使用者自己輸入内容指派給變量,并且能夠被程式後面使用。
my_name = input("Plz input your name:")
print('My name is', my_name)
結果:
注意:input 輸入的值都是字元串,如果你需要的并不是字元串,記得對值得類型就行轉換
變量常量
變量:存儲資料的載體,計算機中變量實際是一塊記憶體空間,能夠被讀取和修改。
在 python 中,變量命名有如下規則:
1. 數字,字母,下劃線組成,不能字母開頭。
2. 區分大小寫。
3. 不用跟系統關鍵字同名,如:print
這裡順便提一提 PEP8 規範,這是一個非常嚴格的規範,但是希望大家都能遵守:
1. 小寫字母組成,單詞之間下劃線連接配接。
2. 受保護的執行個體屬性單下劃線開頭,後面會說。
3. 私有的執行個體屬性使用雙下劃線開頭,後面會說。
4. 見名知義。
例如:
# 變量定義
my_name = "Dylan"
my_age = 25
is_boy = True
user_info = None
# 變量引用
print('My name is', my_name)
print('My age is', my_age)
print('You are boy:', is_boy)
print('Desc:', user_info)
結果:
常量:這裡就一個特殊的,π,3.1415926
資料類型
我們這裡隻是簡單的介紹一下資料類型:
1. 整數:
包括正整數,負整數,0。python 是可以處理任意大小的整數。
2. 浮點數:
也就是小數,但是包含科學計數法部分,如:1.2x10^10,有些地方也把 10 寫成 e,如:1.2e10,0.0012 寫成 1.2e-3。
值得注意的是,在 Python 中,整數永遠是精确的,但是小數可能是結果四舍五入而來。
3. 字元串:
單引号或者雙引号括起來的任意文本 ,如:"abc"。
當然,在字元串中有些特殊的,比如 \(轉義符),幾種常見的轉義符:\n 換行,\t 制表符,\\ 符号本身
不轉義可以使用 r。如下執行個體:
print('hello\nworld')
print('hello\tworld')
print('\\n\\')
print(r'hello\nworld')
4. 布爾類型:
至于兩個 True 和 False。可以用于判斷,後面會用到。
5. 空值:
隻有一個,None,注意 Node 不是 0。
檢視資料類型:type(變量)
a = 'hello'
print(type(a))
資料類型轉換方法:
方法 | 作用 |
---|---|
int() | 将一個數字或者本身是數字的字元串轉換成整型 |
float() | 将字元串轉換成小數 |
str() | 将指定對象轉換成字元串 |
chr() | 将整數編碼成對應的字元串,也就是傳回在數字對應ASCII 表中的值 |
ord() | 将字元串(一個字元)轉換成對應編碼(整數),也就是傳回字母傳回在 ASCII 表中的數字 |
示例:
a = 3.1415926
print(int(a))
b = 3
print(float(b))
c = 123
print(type(str(c)))
d = 65
print(chr(d))
f = 'A'
print(ord(f))
格式化輸出
我們隻需要記住幾個常用就是了:%d 整數占位符,%f 浮點數占位符,%s 字元串占位符,%x 十六進制整數
和轉義符 \ 一樣,% 的轉義符就是 %,是以輸出 % 就是 %%。
示例如下:
# 單個占位符
print('My name is %s' % 'Dylan')
# 多個占位符
print('My name is %s,age is %d!' % ('Dylan', 25))
# 小數保留位數
print('%.2f' % 3.1415926)
# 右對齊指定位數,不夠前面補充字元:
print('%3d' % 2)
print('%03d' % 2)
# 左對齊
print('%-5d#hello' % 2)
# 百分比
print('%d%%' % 10)
當然還有另外一種格式化方式,隻是用的比較少:
print('My name is {}, age is {}'.format('Dylan', 25))
print('My name is {0}, age is {1}'.format('Dylan', 25))
print('My name is {}, age is {age}'.format('Dylan', age=25))
運算符
參考如下表:
描述 | |
---|---|
[數字] [:] | 下标/切片 |
~ + - | 按位與/正/負 |
** + - * / % // | 幂/加/減/乘/除/取模/取整(算數運算符) |
>> << | 右移/左移 |
& | 按位與 |
> < >= <= == != | 大于/小于/大于等于/小于等于/等于/不等于 |
is/is not | 身份運算符 |
in/not in | 成員運算符 |
not/or/and | 非/或/和(邏輯運算符) |
至于優先級,感興趣的可以自己下去研究:( ) > not > and > or
1. 算術運算符示例:
# 算術運算符
a = 3
b = 5
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a % b)
print(a // b)
print(a ** b)
2. 比較運算符:
# 比較運算符
a = 3
b = 5
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(a == b)
print(a != b)
3. 邏輯運算符:
and:同真為真
or:一真為真
not:取反
print(3 > 4 or 4 < 3 and 1 == 1)
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)
該例子僅供參考,如果你把邏輯以節寫的這麼複雜了,隻能說明是垃圾代碼。
數值在邏輯比較時候:
x or y,x 真,值 x,x 假,值 y
x and y,x 真,值 y,x 假,值 x
print(0 or 4 and 3 or 7 or 9 and 6)
結果為:3
4. 成員關系運算符後面我們會單獨在提!
練習示例
【1】輸入圓半徑計算周長和面積:
# 導入 pi
from math import pi
# 使用者輸入半徑
radius = float(input("請輸入圓的半徑:"))
# 計算周長和面積
cycle = 2 * pi * radius
area = pi * radius * radius
# 輸出結果
print("半徑為 %.2f 的圓的周長為 %.2f,面積為 %.2f" % (radius, cycle, area))
【2】判斷閏年和平年:
# 使用者輸入年份
year = int(input("請輸入年份:"))
# 判斷閏年(現在沒學 if,用上面的方法)
is_leap = ((year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0))
print("年份 %s 是否是閏年:%s" % (year, is_leap))
小結
這一節主要是 Python 基礎中得基礎,其中資料類型,運算符算是重中之重。輸入可能在以後寫代碼得時候用得比較少,但是輸出絕對不少。
在群裡之前總是有人在問代碼除了問題,不知道怎麼解決,工具就給他報個錯,然後人就傻了。其實對于初學者最為直覺的調試方法就是将有些步驟的結果通過 print 列印出來,看結果是否符合我們的預期。
自然問題很多就得以解決。還有部分不能解決的,就可以結合 type 來檢查,看類型是否正确。如果最後還不能解決,那問題可能就是你本身就寫錯了。