版權聲明:本文為博主原創文章,未經博主允許不得轉載。
PS:轉載請注明出處
作者:TigerChain
地址:http://www.lxweimin.com/p/f77ce55bf495
本文出自 TigerChain簡書 Python 系列
教程簡介
- 1、閱讀對象
本篇教程適合新手閱讀,老手直接略過
-
2、教程難度
初級
3、Demo 地址:https://github.com/tigerchain/python-study/tree/master/basic/01-python基本知識
正文
一、python 變量和數據類型
1、什么是變量
簡單的說,我們可以把變量看做一個盒子,可以將零食、飲料、面包等放在里在,想像一下超市中的籃子,或是手推車,理論上你可以將任何你想存放的物品放在這個盒子里面,如圖所示
更通俗的說,我們也可以拿學校的宿舍房來舉例,比如,每個房間都有一個房間號,是一一對應的,我們就可以把房間號看做是變量,變量值可以看成是房間里面的人,變量的類似看做是房間的類型「是標準間還是高級間」
2、變量的聲明
從前面我們知道,python 是動態語言,不需要指定變量的類型「變量的類型根據它的值確定」,我們在 python 中聲明一個變量的格式是:
變量名 = 變量值
比如
a = 100 # 它就是一個整形變量
b = 'TigerChain' # b 就是一個字符串
3、變量的內存分配
當我們輸入 x = 5 時,內存中是如何變化的
首先,當我們輸入 x = 5 的時候,python 解釋器做了兩件事情
- 1、在內存中創建一個存放 5
- 2、并且在內存中創建一個名字叫做 x 的指向這個 5
直接寫代碼來直觀的感受一下,新建一個 02、python變量.py 文件「真實項目開發中,不要使用中文來命名,這里為了直觀的表達,采用中文來命名」
# -*- coding: UTF-8 -*-
x = 5
print ("x=%d"%(x))
print ("x的地址是:%d"%(id(x)))
然后 cd 02、python變量.py 所在的目錄,運行
python 02、python變量.py
x=5
x的地址是:140324664033288
我們可以看到輸出了 5 并且 x 的地址是 140324664033288,我們來看看 x = 5 在內存的分配情況
上圖代表了表達的意思是 x 指向了存儲為 5 的那個地址,并且地址是:140324664033288,這里就和 c 的指針是一樣的,類似于 java 中的棧內存存的地址。
- 3、把 x 賦值給 y ,我們繼續修改上面的代碼,看有什么情況發生
# -*- coding: UTF-8 -*-
x = 5
y = x
print ("x=%d"%(x))
print ("x的地址是:%d"%(id(x)))
print ("y=%d"%(y))
print ("y的地址是:%d"%(id(y)))
我們把一個變量 x 賦值給變量 y ,然后運行查看結果
python 02、python變量.py
x=5
x的地址是: 140324664033288
y=5
y的地址是: 140324664033288
結果一模一樣,也就是說 y=x 即把 x 所指向的地址賦給了 y ,里所當然y 的值也就為5,如下圖所示:
- 4、變量指向不同的值,我們再修改上面的代碼,先給 x 賦值,再改變 x 的值,看看結果
x = 5
print ("x=%d"%(x))
print ("x的地址是:%d"%(id(x)))
x = 8
print ("x=%d"%(x))
print ("x的地址是:%d"%(id(x)))
運行輸出
python 02、python變量.py
x=5
x的地址是:140324664033288
x=8
x的地址是:140549470338992
內存分配如下圖所示
開始 x 指向了 140324664033288 這個內存地址,并且里面存放的是5,最后 x = 8 ,改變了 x 所指向的地址。
- 5、x,y 賦相同的值,代碼如下:
x = 5
y = 5
print ("x=%d"%(x))
print ("x的地址是:%d"%(id(x)))
print ("y=%d"%(y))
print ("y的地址是:%d"%(id(y)))
運行查看結果
python 02、python變量.py
x=5
x的地址是:140374844686328
y=5
y的地址是:140374844686328
得出結論就是,值相同對應的內存地址一定是相同的「在 python 中」
二、輸入輸出
1、輸出
- 1、基本輸出
在 python 中,輸出我們使用 print,類似于 java 中的 System.out.print.
使用 print 直接跟著想輸出的內容打印到控制臺中
例如,在控制臺輸出 hello world, 當然 print 可以輸出多個字符串,用逗號分隔即可
# python2 上可以支持,在python3上會報錯
print "hello world"
# python2 和 3 上都支持
print("hello world")
# 輸出多個字符串在 python2 中去掉 () 即可
print("hello world","Hi TigerChain")
x = 13
print x
y = 13.56
print y
運行查看結果
- 2、輸出一個美女
print("******************************************************************")
print("* .::::. *")
print("* .::::::::. *")
print("* ::::::::::: *")
print("* ..:::::::::::' *")
print("* '::::::::::::' *")
print("* .:::::::::: *")
print("* '::::::::::::::.. *")
print("* ..::::::::::::. *")
print("* ``:::::::::::::::: *")
print("* ::::``:::::::::' .:::. *")
print("* ::::' ':::::' .::::::::. *")
print("* .::::' :::: .:::::::'::::. *")
print("* .:::' ::::: .:::::::::' ':::::. *")
print("* .::' :::::.:::::::::' ':::::. *")
print("* .::' ::::::::::::::' ``::::. *")
print("* ...::: ::::::::::::' ``::. *")
print("* ```` ':. ':::::::::' ::::.. *")
print("* '.:::::' ':'````.. *")
print("******************************************************************")
運行查看:
- 3、格式化輸出
python 中有兩種格式化輸出的方式
「1」 一種是格式化表達式
類似于 c 中的 printf 輸出參數一樣
%d 十進制整型
%s 字符串
%f 浮點型
%x 十六進制
%o 八進制
%r 萬能占位符,什么都可以用
比如:
x = 0x123
print("0x123 的進制輸出---十六進制:%x,十進制:%d,八進制:%o"%(x,x,x))
y = '你好'
c = 13.56
d = 13
print("%s,%f,%d"%(y,c,d))
運行輸出
「2」 一種是格式化方法
使用 format() 格式化方法
比如:
print('{0} {1} {2}').format('Hello','ThgerChain',"Good")
其中 {0} ... 就像是一個占位符,后面才是真正的值填充到占位符中
運行輸出
2、輸入
我們在 ATM 上取錢的時候,肯定要輸入密碼,那么這就是一個輸入的過程,輸出的肯定是錢
- 1、pthon 中輸入語法「python2 和 python3 中有區別」
在 python2 中輸入:raw_input()
在 python3 中輸入:input()
輸入返回的是一個字符串,我們可以使用 type() 來檢測某個變量的類型
例如:一個簡單的乘法
num = raw_input("請輸入數字:")
print type(num) # 可以檢 num 的類型
print(num+"*2=%d"%(int(num)*2))
運行輸出:
python 03、輸入和輸出.py
請輸入數字:1
<type 'str'>
1*2=2
- 2、一個簡單的取款機 demo
「1」、效果圖
「2」、代碼
# 定義密碼輸入次數
inputPasscount = 0
# 提示你是否插入銀聯卡 輸入 yes 即可
chaka = raw_input('你是否插入銀聯卡:')
if(chaka=='yes'):
password = int(raw_input('請輸入卡密碼:'))
# 只給你三次輸入密碼的機會,錯了卡就被吞了
while inputPasscount < 3:
if(password==123456):
money = raw_input('輸入你要取的錢數:')
if money.isdigit():# 全部是數字則正確
print("你成功的取了 %d "%(int(money))+"元")
break
else:
print("請輸入正確的金額")
else:
if inputPasscount == 2:
print("密碼輸錯三次,卡被鎖定,請聯系管理員")
break
password = int(raw_input('輸入的密碼錯誤,請重新輸入:'))
inputPasscount += 1
三、關系運算和邏輯運算符
1、關系運算符
關系運算符是用來描述某種關系的,它不能單獨使用,要用在一個表達式中,格式如下
左邊 運算符 右邊
運算符號 | 說明 | 舉例 |
---|---|---|
== | 用來檢測兩個值是不是相等,如果相等返回 True ,否則返回 False | a = 1 b = 1 a=b為true |
!= | 如果兩個值不相等,返回True,否則返回 False | a=1,b=1 a!=b 為False |
<> | 如果兩個值不相等,返回True,否則返回 False | a=1,b=1 a!=b 為False ,類似于 != |
> | 如果左邊的數據大于右邊則返回 True ,否則返回 False | a=4,b=3 a>b 返回 True |
< | 如果左邊的數據小于右邊則返回 True ,否則返回 False | a=3,b=4 則 a<b 返回 True |
>= | 如果左邊的數據大于等于右邊則返回 True ,否則返回 False | a=4,b=3 a>=b 返回 True |
<= | 如果左邊的數據小于等于右邊則返回 True ,否則返回 False | a=3,b=3 則 a<=b 返回 True |
2、邏輯運算符
運算符號 | 說明 | 舉例 |
---|---|---|
and | 一假必假,如果用 and 連接起來的有一個為假則整個為假 | if(a==1 and y==2):print("xxxx") |
or | 一真必真,如果用 or 邊境起來的有一個為真整個為真 | if(a==1 or y==2):print("xxxx") |
not | 真假相對,本身是真使用 not 就變為假,反之 | if(not(a==1)):print("xxxx") |
四、條件語句
1、條件語句 if
「1.1」
if 是用來做條件判斷有,格式如下
if 條件成立:
處理想要處理的事情
demo1:如果你 18 歲了,你就可以看血腥電影了
# -*- coding:UTF-8 -*-
a = int(raw_input('請輸入你的年齡:'))
if a>=18:
print("你可以看血腥的電影了")
運行看結果
python 04、if語句.py
請輸入你的年齡:18
你可以看血腥的電影了
「1.2」
if 的嵌套,格式如下
if 條件1成立:
處理滿足條件1,要做的事
...
if 條件2成立:
處理滿足條件2,要做的事情
...
demo2: 如果你 18 歲并且不害怕恐怖事件,那么你可以看血腥電影
修改 demo1
# 輸入年齡
a = raw_input('你是否年滿18歲?回答 yes 或 no :')
if a=='yes': # 年齡滿足
print('年齡符合了!請繼續輸入問題')
# 對恐怖事件的看法
b = raw_input('面對恐怖電影你會非常害怕嗎?回答 yes 或 no :')
if b =='yes': #滿足條件
print("你可以看恐怖血腥的電影了!!!")
運行查看結果:
2、if-else 語句
使用場景就是如果 if 的情況不滿足我們的要求時我們還要干某些事情,我們如何辦?使用 else
格式:
if 條件成立:
干某些事情
else:
不滿足條件要干某些事情
demo1:如果查詢你的考試得了 90 分以上,就要以出去旅游,否則就在家里學習
# 導入隨機數模塊
import random
print("查看考試成績:1、查詢 ")
inputStr = int(raw_input())
if(inputStr == 1):
# 生成 80 - 100 的隨機整數
a = random.randint(80, 100)
if a >=90:
print("你的成績是 %d 分,恭喜你可以出去旅游,地點隨便選"%a)
else:
print("很遺憾,沒有到 90 分,你還需要加油!爭取下次旅游")
else:
print("請輸入正確的查詢指令!!!")
運行查看結果:
3、elif 語句
if-else 如們實現的是當滿足條件的時候我們做事情1,否則做事情2,我們如果有以下場景,當...1 的時候做事情 1 ,當... 2 的時候做事情 2,當 ... 3 的時候估事情 3 ..... 這種情況,我們就可以使用 elif
PS:這里要注意一點,elif 必須和 if 一起使用,不能單獨使用
格式如下:
if 滿足條件1:
做事情1
elif 滿足條件2:
做事情2
elif 滿足條件3:
做事情3
demo1: 如果你有 10 萬你就是十萬元戶,如果有 100 萬就是百萬富翁,有 1000萬就是千萬富翁,超過千萬你真是土豪。
# -*- coding:UTF-8 -*-
money = int(raw_input("請輸入你的財富,輸入整數「代表萬元」即可:"))
if money>10 and money<100:
print("你是十萬元戶,努力哦")
elif money>=100 and money<1000:
print("你小有成就,不錯,都是百萬富翁了")
elif money>=1000 and money<10000:
print("千萬富翁,約嗎?")
elif money>=10000:
print("靠,你真是土豪,帶我裝逼帶我飛好吧")
else:
print("得瑟啥呢,好好努力賺錢吧,還不好好的學習 python ,看看 TigerChain 的簡書吧")
運行查看結果:
2、循環語句
我們前面學習了輸出,現在有一個需求把 100 輸出1萬遍,你肯定就瘋了,循環就很好的解決這個問題
1、while 循環
格式:
while 條件:
條件滿足,做某些事情
....
demo1:輸出1-100的和
# 定義結果 變量
total = 0
# 定義循環條件變量
i = 1
while i<=100:
# 把上一次的結果+1 然后賦值變成新的
total=total+i
# 循環+1
i+=1
print ("1~100的和是:%d"%total)
運行查看結果:
python 07、while循環.py
1~100的和是:5050
demo2: 計算 1-100 中奇數的和
total = 0
i = 1
while i<=100:
total = total+i
# 奇數的算法
i+=2
print("1~100的所有奇數和是:%d"%total)
運行查看結果:
python 07、while循環.py
1~100的所有奇數和是:2500
demo3:輸入用戶名和密碼直到正確為止
# 輸入用戶名
username = raw_input('請輸入用戶名:')
# 輸入用戶密碼
password = raw_input('請輸入密碼:')
# 如果用戶名和密碼不對,那么就提示錯誤,再次輸入
while username!='admin' or password!='123456':
print('用戶名或密碼錯誤,請重新輸入')
username = raw_input('請輸入用戶名:')
password = raw_input('請輸入密碼:')
# 如果輸入成功,則提示
print("歡迎 %s 登錄"%username)
運行查看結果:
demo4:用戶不斷的輸入一個數字,直到輸入 bye 則退出程序
while True:
num = raw_input("請輸入一個數字「直到輸入 bye 就結束了」:")
if num=='bye':
print('結束了')
break
else:
print num
運行查看結果
當然了,while 還可以嵌套使用,格式
while 條件:
滿足條件,做某些啥事情
...
while 條件:
滿足條件,做某些啥事情
...
demo5:使用 while 嵌套打印九九乘法表
#初始一個變量x
x=1
#判斷x小于等于9
while x<=9:
#初始一個變量y
y=1
#確定y的循環次數,小于等于x
while y<=x:
#格式化打印輸出
print y,'*',x,'=',y*x,' ',
#計數器
y+=1
#打印換行,前面用逗號隔開過,沒有這行代碼就連成一片了。
print
#外圍的另一個計數器
x+=1
運行查看結果
python 07、while循環.py
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
2、for 循環
在 python 和其它語言類似,除了 while 循環,還可以使用 for 循環,格式如下
for 臨時變量 in 列表或字條串
循環體
demo1:循環打印字條串中每個值
name = 'TigerChain'
for x in name:
print x
運行查看結果:
python 08、for循環.py
T
i
g
e
r
C
h
a
i
n
demo2:定義一個姓名列表,然后打印出每個名字
names=["張三","李四","王五"]
for name in names:
print name
運行查看結果:
python 08、for循環.py
張三
李四
王五
for 循環也是可以嵌套的,我們來使用 for 循環來打印九九乘法表
demo3:for 循環打印九九乘法表
在這里我們要使用一個 range 函數格式如下:
range(start, end, scan)
range:一個范圍,默認從 0 開始 ,參數含義:start:計數從start開始。默認是從0開始。例如range(5)等價于range(0,10)取 0-9的值,range(0,10,2),最后一個數是間隔的意思,這句就是輸出 0-9 每次間隔 2 的一個列表「數組」
輸出結果是:[0, 2, 4, 6, 8]
for i in range(1,10):
for j in range(1,i+1):
result = i * j
print j, 'x', i, '=', j*i ,'\t',
print ''
運行查看結果:
python 08、for循環.py
1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
3、break 和 continue
break 和 continue 用在循環體中,其中 break 是直接跳出循環,continue 是跳出本次循環,繼續下一次循環
demo1:輸入字符串,遇到 o 就退出
a = raw_input("輸入字符串「直到輸入 o 就不會輸出 o 之后的字符」:")
for x in a:
if x=='o':
break
print x
運行查看結果:
輸入字符串「直到輸入 o 就不會輸出 o 之后的字符」:12412qwoqwert
1
2
4
1
2
q
w
我們可以看到,o 以后的字符沒有被輸出
demo2:輸入字符串,只過濾不輸出 o 其它的輸出
a = raw_input("輸入字符串「輸出過濾 o 之后的字符」:")
for x in a:
if x=='o':
continue
print x
運行查看結果:
輸入字符串「輸出過濾 o 之后的字符」:123o321
1
2
3
3
2
1
我們就把 o 過濾掉了
到此為止,我們把 python 的基礎知識就說完了。
本文的 Demo 地址:https://github.com/tigerchain/python-study/tree/master/basic/01-python基本知識
據說每個勤奮、聰明、能干的人都會點喜歡。