while循環 運算符和編碼

昨日回顧

1. 初識python
        python是一門弱類型的解釋型高級編程語言
        解釋器:
            CPython  官方提供的默認解釋器. c語言實現的
            PyPy 把python程序一次性進行編譯.
            IPython

    2. python的版本 2.x 3.x 3. 變量 概念: 程序運行過程當中產生的中間值. 暫時存儲在內存, 方便後面的程序使用它 就是一個符號. x = 10 郝建 -> 沈騰 白雲 -> 宋丹丹 命名規範: 1. 數字, 字母, 下劃線組成 2. 不能是數字開頭, 更不能是純數字 3. 不能用python的關鍵字 4. 不要用中文 5. 不要太長 6. 有意義 7. 區分大小寫 8. 用駝峯或者下劃線 數據類型: 1. int 整數 +-*/% // ** 2. str 字符串, 把字符連城串 字符:單一的文字符號 '', "", ''', """ + 拼接. 要求兩端都得是字符串 * 重複 必須乘以一個數字 3. bool 布爾值 True False 用來判斷 用戶交互 變量 = input(提示語) 條件判斷: if 條件: if-語句塊 if 條件: if-語句塊 else: else-語句塊 if 條件1: if-1 elif 條件2: if-2 ...... else:

 

今日內容

1. while循環 (難點)
        while 條件: 循環體(break, continue) 2. 格式化輸出 
     %s 萬能
     %d f"{變量}" 3. 運算符 and or not (難點) 運算順序: ()=> not => and =>or 4. 初識編碼 gbk unicode utf-8 1. ascii 8bit 1byte(字節) 256個碼位 只用到了7bit, 用到了前128個 最前面的一位是0 2. 中國人本身對計算機編碼進行統計. 本身設計. 對ascii進行擴展 ANSI 16bit -> 清華同方 -> gbk GBK 放的是中文編碼. 16bit 2byte 兼容ascii 3. 對全部編碼進行統一. unicode. 萬國碼. 32bit. 4byte. 夠用了可是很浪費 4. utf-8 可變長度的unicode 英文: 1byte 歐洲文字: 2byte 中文: 3byte 字節(byte) 1byte = 8bit 1kb = 1024byte 1mb = 1024kb 1gb = 1024mb 1tb = 1024gb 1pb = 1024tb 預習: 字符串(記的東西) for循環

 

while循環

# 語法:
while 條件:
  結果

 

若是條件是真, 則直接執⾏結果. 而後再次判斷條件. 直到條件是假,停⽌循環html

那咱們怎麼終⽌循環呢? 結束循環:python

1,改變條件. 2,break面試

 

流程控制-break和continue算法

1, break: 馬上跳出循環. 打斷的意思編程

2, continue: 停⽌本次循環, 繼續執⾏下⼀次循環.編程語言

 

while True:
    content = input("請輸入你要噴的內容, 輸入Q退出")
    if content == "Q":
        # 退出程序 打斷循環
        break # 直接跳出循環
    print("你對打野說:", content)



if True:
    print("娃哈哈")


# 最多噴三次
count = 1
while count <= 3:

    # count = 1  # 次數, 死循環
    content = input("請輸入你要噴的內容")
    print("你要對上單說:", content)

    # 改變count
    count = count + 1





# continue
while True:
    content = input("請輸入你要噴的內容, 輸入Q退出")
    if content == "":
        continue # 中止當前本次循環. 繼續執行下一次循環  不會完全終止循環,只是中斷不會終止.
    if content == "Q":
        # 退出程序 打斷循環
        break # 直接跳出循環
    print("你對打野說:", content)

# 可以讓循環退出: 1. break  2. 改變條件

# continue  中止當前本次循環. 繼續執行下一次循環
# break  完全的幹掉一個循環




# 讓程序從1數數, 數到100
count = 1
while count <= 100:
    print(count) # 1
    count = count + 1


# 計算 1-100之間全部的數的和
sum = 0                 # sum: 0 + 1 + 2 + 3 + 4....99 + 100
count = 1               # count: 1, 2, 3, 4, 99,100, 101
while count <= 100:
    sum = sum + count  # 累加運算
    count = count + 1
print(sum)



# 數數. 1-100奇數
# 方法1
count = 1
while count <= 100:
    print(count)
    count = count + 2

# 方法2
count = 1
while count <= 100:
    if count % 2 == 1:
        print(count)
    else:
        print("偶數....")
    count = count + 1

 

補充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: 不表⽰任何內容,爲了代碼的完整性,佔位⽽已 .spa

 

 

格式化輸出

%s 字符串佔位符(可是全部的數據類型均可以使用)
%d 數字佔位符(只能int類型使用)
f"{變量}"
name = input("請輸入你的名字:")
address = input("請輸入你來自哪裏:")
wife = input("請輸入你的老婆:")
notlike = input("請輸入你不喜歡的明星:")

print("我叫"+name+", 我來自"+address+", 我老婆是"+wife+", 我不喜歡"+notlike)
# 須要掌握的內容===============
# 格式化輸出  %s
print("我叫%s, 我來自%s, 我老婆是%s, 我不喜歡%s" % (name, address, wife, notlike))
# 新版本的格式化輸出
print(f"我叫{name}, 我來自{address}, 我老婆是{wife}, 我不喜歡{notlike}")
# 須要掌握的內容===============

hobby = "踢球"
print("我喜歡%s, 我老婆更喜歡%s" % (hobby, hobby))

# %s 表示字符串的佔位 . 全能的佔位.
print("周杰倫今年%s歲了" % 18)
# %d 佔位數字. 只能放數字
print("周杰倫去年%d歲了" % 16)
print("周杰倫去年%d歲了" % "16") # 報錯

# 坑, 若是這句話使用了格式化輸出. % 就是佔位, 若是想顯示正常的%   %% 轉義
print("我叫%s, 我已經度過了30%的人生了" % "俞洪敏") # 報錯 not enough arguments for format string
print("我叫%s, 我已經度過了30%%的人生了" % "俞洪敏")

 

注意:
  在字符串中若是使⽤了%s這樣的佔位符,那麼全部的%都將變成佔位符,咱們須要使用%%來表示字符串中的%.

     若是你的字符串中沒有使用過%s,%d佔位.,那麼不須要考慮這麼多, 該%就%.沒毛病老鐵.

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

 

運算符

什麼是運算符?舉個簡單的例子 4 +5 = 9 。 例子中,4 和 5 被稱爲操做數,"+" 稱爲運算符。

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

算數運算、 比較運算、邏輯運算、 賦值運算、

成員運算、 身份運算、 位運算.

算數運算

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

 

注意: 

// 取整除 - 向下取接近除數的整數
>>> 9//2 4 >>> -9//2 -5

比較運算

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

# 注意:
print(3 <> 3)  2.x可使用, 3.x 不能
print(3 > = 3) # 報錯,>= 是個總體,不能分開

 

賦值運算

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

 

邏輯運算(重點難點)

 

1,  優先級關係爲   () > not > and > or 

2,  x or y , x爲真,值就是x,x爲假,值是y;

    x and y,  x爲真,值是y,  x爲假,值是x。 

 

 

#邏輯運算符 初級
'''
and : 而且. 左右兩端同時爲真. 結果才能是真
or : 或者. 左右兩端有一個是真. 結果就是真
not : 非. 非真即假, 非假即真  不真-> 假  不假 -> 真
混合運算順序: () => not => and => or  當出現相同的優先級的時候 從左往右算

'''
print(3 > 2 and 4 < 6 and 5 > 7) # False
print(5 < 6 or 7 > 8 or 9 < 6 or 3 > 2)  # True
print(not 5 < 6)  # False
print(3 > 2 or 5 < 7 and 6 > 8 or 7 < 5)  # True
print(3 > 4 or 4 < 3 and 1 == 1)  # False
print(1 < 2 and 3 < 4 or 1 > 2)  # True
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # True
print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) # False
print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # False
print((not 2 > 1 and 3 < 4) or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # False


#邏輯運算符 進階
'''
優先級依然是:() > not > and > or
當出現 x or y的時候, 判斷x是不是0 若是x==0 then y 不然返回x
當出現 x and y 的時候, 和or相反(or 要非0,and要0)
把False 當成0,True 當成1來看
'''
# 當出現 x or y的時候, 判斷x是不是0 若是x==0 then y 不然返回x
print(1 or 2) # 1
print(0 or 2) # 2
print(3 or 0) # 3
print(4 or 0) # 4
print(0 or 3 or 0 or 2 or 0 or 5 or 0 or 188)  # 3

# 當出現 x and y 的時候, 和or相反
print(1 and 2) # 2
print(0 and 3) # 0
print(3 and 0) # 0
print(4 and 0) # 0
print(9 and 3 and 4 and 1 and 4 and 8)  # 8
print(1 and 2 or 3) # 應付面試  2
print(1 and 2 > 4)  # False

# False 當成0來看
print(False and 1)  # False
print(3 > 5 or 5 < 6 and 7)  # 7
print(4 > 5 or 7 and 8 < 6 or 3 and 4)  # 4
print(4>5 or (7 and 8<6) or (3 and 4)) #優先級順序依舊存在  4

 

成員運算

 

# 成員運算 in
# 栗子1
content = input("請輸入你的評論:")
if "馬化騰" in content: # content中是否包含了xxx
    print("你的評論不合法")
else:
    print("你的評論是合法的")
# 栗子2
ad = input("請輸入你的廣告:")
if "" in ad or "第一" in ad or "全球" in ad:
    print("不合法的")

else:
    print("合法的")

  

補充2:

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

content = input("請輸⼊你的評論")
if "蒼⽼師" in content or '邱⽼師' in content:
    print('你輸⼊的內容不合法') 
else:
    print("評論成功")

 

身份運算

身份運算符用於比較兩個對象的存儲單元

注: id() 函數用於獲取對象內存地址。

is 與 == 區別:

is 用於判斷兩個變量引用對象是否爲同一個, == 用於判斷引用變量的值是否相等。

>>>a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True

 

位運算

按位運算符是把數字看做二進制來進行計算的。Python中的按位運算法則以下:

下表中變量 a 爲 60,b 爲 13二進制格式以下:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

 

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0
 
c = a & b;        # 12 = 0000 1100
print ("1 - c 的值爲:", c)
 
c = a | b;        # 61 = 0011 1101 
print ("2 - c 的值爲:", c)
 
c = a ^ b;        # 49 = 0011 0001
print ("3 - c 的值爲:", c)
 
c = ~a;           # -61 = 1100 0011
print ("4 - c 的值爲:", c)
 
c = a << 2;       # 240 = 1111 0000
print ("5 - c 的值爲:", c)
 
c = a >> 2;       # 15 = 0000 1111
print ("6 - c 的值爲:", c)


# 以上實例輸出結果:
1 - c 的值爲: 12
2 - c 的值爲: 61
3 - c 的值爲: 49
4 - c 的值爲: -61
5 - c 的值爲: 240
6 - c 的值爲: 15

結果小技巧:

取反:  ~  ==>  ~n  ==>  -(n+1)

左移:<<  ==> a<<b ==> a * 2b

右移:>>  ==> a>>b ==> a // 2b

 

 

初識編碼

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

計算機:

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

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

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

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

這⾥GBK國標碼. 前⾯的ASCII碼部分. 因爲使用兩個字節. 因此對於ASCII碼而言. 前9位都是0 (由於原來8位的ASCII 碼中的最高位是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位. 

 

小結:(上面是發展歷史,咱們記住結論就行啦)

# 初識編碼   ascii ==> gbk ==> unicode ==> utf-8
    1. ascii   8bit  1byte(字節)  256個碼位 只用到了7bit, 用到了前128個 最前面的一位是0
    2. 中國人本身對計算機編碼進行統計. 本身設計. 對ascii進行擴展 ANSI 16bit -> 清華同方 -> gbk
        GBK 放的是中文編碼. 16bit  2byte 兼容ascii
    3. 對全部編碼進行統一. unicode. 萬國碼.  32bit. 4byte. 夠用了可是很浪費

    4. utf-8 可變長度的unicode
        英文: 1byte
        歐洲文字: 2byte
        中文: 3byte

 單位轉換

8bit = 1byte 
1024byte = 1KB 
1024KB = 1MB 
1024MB = 1GB 
1024GB = 1TB 
1024TB = 1PB 
1024PB = 1EB 
1024EB = 1ZB 
1024ZB = 1YB 
1024YB = 1NB
1024NB = 1DB
經常使用到TB就夠了

 

 今日做業及明日默寫

 今日做業及明日默寫

相關文章
相關標籤/搜索