python基礎(5):格式化輸出、基本運算符、編碼問題

1. 格式化輸出

如今有如下需求,讓⽤戶輸入name, age, job,hobby 而後輸出以下所⽰:python

------------ info of Alex Li -----------
Name : Alex Li
Age : 22
job : Teacher
Hobbie: girl
------------- end -----------------

你怎麼實現呢?你會發現,⽤字符拼接的⽅式還難實現這種格式的輸出,因此⼀起來學⼀下新知識,只須要把要打印的格式先準備好, 因爲⾥⾯的⼀些信息是須要⽤戶輸⼊的,你沒辦法預先知道,所以能夠先放置個佔位符,再把字符串⾥的佔位符與外部的變量作個映射關係就好。學習

name = input("Name:")
age = input("Age:")
job = input("Job:")
hobby = input("Hobbie:")
info = '''
------------ info of %s ----------- #這⾥的每一個%s就是⼀個佔位符,本⾏的表明 後⾯拓號⾥的 name
Name : %s #表明 name
Age : %s #表明 age
job : %s #表明 job
Hobbie: %s #表明 hobbie
------------- end -----------------
''' % (name,name,age,job,hobbie) # 這⾏的 % 號就是 把前⾯的字符串 與拓號 後⾯的 變量 關聯起來
print(info)

%s就是表明字符串佔位符,除此以外,還有%d, 是數字佔位符, 若是把上⾯的age後⾯的換成%d,就表明你必須只能輸⼊數字。編碼

這時對應的數據必須是int類型,不然程序會報錯。spa

使⽤時,須要進⾏類型轉換。設計

int(str) # 字符串轉換成int
str(int) # int轉換成字符串

相似這樣的操做在後⾯還有不少。code

若是, 你頭鐵。就不想轉換。覺着轉換很麻煩. 也能夠所有都⽤%s。由於任何東⻄均可以直接轉換成字符串--> 僅限%sorm

如今⼜來新問題了。若是想輸出:blog

我叫xxx, 今年xx歲了,咱們已經學習了2%的python基礎了

這⾥的問題出在哪⾥呢? 沒錯2%, 在字符串中若是使⽤了%s這樣的佔位符. 那麼全部的%都將變成佔位符. 咱們的2%也變成了 佔位符. ⽽"%的"是不存在的, 這⾥咱們須要使⽤%%來表⽰字符串中的%。ci

注意: 若是你的字符串中沒有使⽤過%s,%d站位。那麼不須要考慮這麼多,該%就%.沒⽑病老鐵。unicode

print("我叫%s, 今年22歲了, 學習python2%%了" % '王尼瑪') # 有%佔位符
print("我叫王尼瑪, 今年22歲, 已經涼涼了100%了") # 沒有佔位符

2. 基本運算符

計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲:

算術運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算。

這章咱們暫只學習算數運算、⽐較運算、邏輯運算、賦值運算

2.1 算術運算

如下假設變量:a=10,b=20

 

 

2.2 比較運算

如下假設變量:a=10,b=20

 

 

2.3 邏輯運算

如下假設變量:a=10,b=20

針對邏輯運算的進⼀步研究:   

1.在沒有()的狀況下not 優先級⾼於 and,and優先級⾼於or,即優先級關係爲( )>not>and>or,同⼀優先級從左往 右計算。

() > not > and > or

例題: 判斷下列邏輯語句的True,False。

3>4 or 4<3 and 1==1
1 < 2 and 3 < 4 or 1>2
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

2.

x or y , 若是x是0 返回y, 若是x是非零, 返回x

x and y, 若是x是0 返回x, 若是x是非零, 返回y

not x,若是是0,返回True,若是x是非零, 返回False

 

 

例題:求出下列邏輯語句的值。

8 or 4
0 and 3
0 or 4 and 3 or 7 or 9 and 6

2.4 賦值運算

如下假設變量:a=10,b=20

3. 編碼的問題

python2解釋器在加載 .py⽂件中的代碼時,會對內容進⾏編碼(默認ascill),⽽python3對內容進⾏編碼的默認爲utf8。

計算機:

早期,計算機是美國發明的,普及率不⾼,⼀般只是在美國使⽤。因此, 最先的編碼結構就是按照美國⼈的習慣來編碼的。 對應數字+字⺟+特殊字符⼀共也沒多少, 因此就造成了最先的編碼ASCII碼,直到今天ASCII依然深深的影響着咱們。

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字⺟的⼀套電腦編碼系統,主要⽤於顯示現代英語和其餘⻄歐語⾔,其最多隻能⽤ 8 位來表示(⼀個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256個符號。

隨着計算機的發展,以及普及率的提⾼,流⾏到歐洲和亞洲,這時ASCII碼就不合適了。⽐如: 中⽂漢字有⼏萬個,⽽ASCII 最多也就256個位置,因此ASCII不⾏了。怎麼辦呢? 這時, 不一樣的國家就提出了不一樣的編碼⽤來適⽤於各⾃的語⾔環境,⽐如,中國的GBK,GB2312, BIG5,ISO-8859-1等等,這時各個國家均可以使⽤計算機了。

GBK,國標碼佔⽤2個字節。對應ASCII碼 GBK直接兼容,由於計算機底層是⽤英⽂寫的, 你不⽀持英⽂確定不⾏,⽽英⽂已經使⽤了ASCII碼, 因此GBK要兼容ASCII。

這⾥GBK國標碼,前⾯的ASCII碼部分,因爲使⽤兩個字節,因此對於ASCII碼⽽⾔,前9位都是0。

字⺟A:0100 0001 # ASCII
字⺟A:0000 0000 0100 0001 # 國標碼

國標碼的弊端: 只能中國⽤,⽇本就垮了,因此國標碼不滿⾜咱們的使⽤,這時提出了⼀個萬國碼Unicode。unicode⼀ 開始設計是每一個字符兩個字節,設計完了,發現我⼤中國漢字依然⽆法進⾏編碼,只能進⾏擴充,擴充成32位也就是4個字 節。這回夠了,可是,問題來了,中國字9萬多,⽽unicode能夠表⽰40多億,根本⽤不了,太浪費了,因而乎, 就提出了新的UTF編碼,可變⻓度編碼。

UTF-8: 每一個字符最少佔8位,每一個字符佔⽤的字節數不定,根據⽂字內容進⾏具體編碼。好比,英⽂,就⼀個字節就夠了,漢 字佔3個字節,這時即滿⾜了中⽂,也滿⾜了節約,也是⽬前使⽤頻率最⾼的⼀種編碼。

UTF-16: 每一個字符最少佔16位。

GBK: 每一個字符佔2個字節,16位。

 

單位轉換:

8bit = 1byte

1024byte = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

1024TB = 1PB

1024TB = 1EB

1024EB = 1ZB

1024ZB = 1YB

1024YB = 1NB

1024NB = 1DB

補充1: while循環

while 條件:

  循環體

else: 循環在正常狀況跳出以後會執⾏這⾥

index = 1
while index < 11:
   if index == 8:
     # break
     pass
   else:
     print(index)
   index = index+1
else:print("你好")

注意: 若是循環是經過break退出的,那麼while後⾯的else將不會被執⾏,只有在while條件判斷是假的時候纔會執⾏這個else。

pass: 不表⽰任何內容,爲了代碼的完整性,佔位⽽已。

補充2: in和not in

能夠判斷xxx字符串是否出如今xxxxx字符串中

content = input("請輸⼊你的評論")
if "蒼⽼師" in content or '邱⽼師' in content:
   print('你輸⼊的內容不合法')
else:
   print("評論成功")
相關文章
相關標籤/搜索