PYTHON之路(第二篇):PYTHON基本數據類型

来源:https://www.cnblogs.com/Nicholas0707/archive/2018/03/11/8542913.html
-Advertisement-
Play Games

一、基礎 1、編碼 UTF-8:中文占3個位元組 GBK:中文占2個位元組 Unicode、UTF-8、GBK三者關係 2、input()函數 輸入數字10,這裡的n是字元串'10',而非數字10 這裡如果 n * 10將輸出 '10101010101010101010'如果將字元串轉換數字,可以用In ...


一、基礎
1、編碼
UTF-8:中文占3個位元組
GBK:中文占2個位元組
Unicode、UTF-8、GBK三者關係



2、input()函數

n = input(" ")
>>>hello
>>>n
>>>'hello'

  

n = input(" ")
>>>10
>>>n
>>>'10'

  

輸入數字10,這裡的n是字元串'10',而非數字10
這裡如果
n * 10將輸出
'10101010101010101010'
如果將字元串轉換數字,可以用Int( )

new_n = int(n)


3、while迴圈、continue、break

while 條件語句1:
    功能代碼1
else 條件語句2:
    功能代碼2

  

while迴圈也可以加else

例子:使用while迴圈輸入 1 2 3 4 5 6 8 9 10

n = 1
while n < 11:
    if n == 7 :
        pass
    else:
        print(n)
    n = n + 1

  


或者

count = 1
while count < 11
    if count == 7:
        count = count + 1
        continue
     print(count)
     count = count + 1

 

當while執行到if count ==7時,遇到continue,下麵的print語句和count=count + 1不會被執行,重新跳回while語句

 

再比如

 

count = 1
while count < 11:
    count = count + 1
    continue
    print('123')
print('end')

  

這裡的print('123')永遠不能被執行到

第二個例子

count = 1
while count < 11:
    count = count + 1
    print(count)
    break
    print('123')
print('end')

 

輸出結果

2
end

  

這裡的print('123')也不能被執行到,遇到break語句直接跳出迴圈,只能執行一次迴圈,即輸出一次print(count)語句
此程式完整執行過程如下圖

 

總結:continue終止當前迴圈進行下次迴圈,break終止整個迴圈


4、算術運算符
+       -     *     /      %        **         //
加   減   乘   除   取餘   乘方    取整數商

5、字元串

name = "馬大帥"
if "馬" in name :
    print("ok")
else:
    print("error")

  

'馬大帥' 稱為字元串
'馬' 成為一個字元
'馬大'或者'大帥'稱為子字元串,也可以叫做子序列,註意這裡的字元要連續的,而'馬帥'不能稱之為子字元串

6、成員運算:
判斷某個字元在某個字元串用in 或者not in

name = "馬大帥"
if "嗎" not in name :
    print("ok")
else:
    print("error")

  

7、布爾值

if語句和while語句都使用布爾值作為條件。
布爾值只有兩種情況:
真 True 假 False

if 條件判斷語句
    功能代碼某塊

 

這裡的條件判斷語句最終會產生一個布爾值,或者是True 或者False

name = "馬大帥"
p ="嗎" not in name
print(p)
if p:
    print("ok")
else:
    print("error")

  

輸出結果

True
ok

  

布爾操作符:and or not

在 Python 看來,只有以下內容會被看作假(註意冒號括弧裡邊啥都沒有,連空格都不要有!):False None 0 "" '' () [] {}

其他一切都被解釋為真!

 

 

舉個例子

i = 10
while i:
    print ("我愛學習!")
print("end")

  


輸出結果

我愛學習!
我愛學習!
我愛學習!
我愛學習!
我愛學習!
我愛學習!
我愛學習!
我愛學習!
我愛學習!
...(這裡代表一直輸出"我愛學習")

  


這個程式會一直輸出"我愛學習",除非按下CTRL+C停止執行程式
而print("end")語句永遠不會被執行到。
再比如

i = 10
while i:
    print ("我愛學習!",i)
    i = i -1
print("end")

  


輸出結果

我愛學習! 10
我愛學習! 9
我愛學習! 8
我愛學習! 7
我愛學習! 6
我愛學習! 5
我愛學習! 4
我愛學習! 3
我愛學習! 2
我愛學習! 1
end

  


通過觀察"我愛學習"後的數字變化,我們可以看到,這個迴圈的執行過程,當i迴圈到0時 ,即while 0 :,0為False,終止迴圈。開始執行
print("end")語句。

8、比較運算符:判斷大小符號
== 等於
> 大於
< 小於
>= 大於等於
<= 小於等於
!= 不等於

 

9、運算的優先順序


先計算括弧內,複雜的表達式推薦使用括弧
一般的執行順序:從左到右
布爾運算優先順序
從高到低:not and or
例子:

user = 'nicholas'
psswd ='123'
v = user == 'nicholas' and passwd == '123' or 1 == 2 and pwd == '9876'
print(v)

  

分析:
v = true and true or
此時不用繼續計算即可得出v為真的結果,不用考慮布爾運算的優先順序,註意這個運算是從左到右的,**而非看到and自動進行運算而後從左到右運算**

一些結論:
從左到右
(1)第一個表達式 or
True or ————>>得出結果True
(2)第一個表達式 and
True and ————>>繼續運算
(3)第一個表達式 or
False or ————>>繼續運算
(4)第一個表達式 and
False and ————>>得出結果False

即**短路邏輯**

短路邏輯
表達式從左至右運算,若 or 的左側邏輯值為 True ,則短路 or 後所有的表達式(不管是 and 還是 or),直接輸出
 or 左側表達式 。

 表達式從左至右運算,若 and 的左側邏輯值為 False ,則短路其後所有 and 表達式,直到有 or 出現,輸出 and 左側表達式到
 or 的左側,參與接下來的邏輯運算。

 若 or 的左側為 False ,或者 and 的左側為 True 則不能使用短路邏輯。

 

 

10、賦值運算符
>= 簡單的賦值運算符 c = a + b 將 a + b 的運算結果賦值為 c
+= 加法賦值運算符 c += a 等效於 c = c + a
-= 減法賦值運算符 c -= a 等效於 c = c - a
*= 乘法賦值運算符 c *= a 等效於 c = c * a
/= 除法賦值運算符 c /= a 等效於 c = c / a
%= 取模賦值運算符 c %= a 等效於 c = c % a
**= 冪賦值運算符 c **= a 等效於 c = c ** a
//= 取整除賦值運算符 c //= a 等效於 c = c // a

 

二、基本數據類型
(1)數字 int
a = 1
a = 2

int整型(整數類型)
python3中用int表示,沒有範圍
python2中int有一定範圍
超過一定範圍,Python2中有長整型即long
python3中只有整型,用int,取消了long類型

**①**、int()將字元串轉換為數字

a = "123"
type(a)
b = int(a)
print(b)
type(b)

  

輸出

<class 'str'>
123
<class 'int'>

 

type()即可查看變數類型

但是
a = "123n"
b = int(a)
此時是無法用int()轉換字元串為數字的。

num = "c"
v = int(num,base = 16) 
print(v)


註釋: v = int(num,base = 16) 將num以16進位看待,將num轉為10進位的數字

②bit_lenght
當前數字的二進位,至少用n位表示

age = 5
r = age.bit_length()
#當前數字的二進位,至少占用了n位表示
print(r)

  輸出結果

3

  即5在二進位中表示為101,至少需要3個位置來表示



(2)字元串 str
a ='hello'
a= 'ssssdda'

字元串函數介紹

a--capitalize()

# capitalize() 首字母大寫
test = "lingou"
v1 = test.capitalize( )
print(v1)

  

輸出結果

Lingou

  

b--casefold( )、lower()

#lower() 所有變小寫
# casefold( ) 所有變小寫,與lower相比casefold更牛逼,很多未知(不是英文的,如法文、德文等)的對相應變小寫

 

test = "LinGou"
v2 = test.casefold( )
print(v2)
v3 =test.lower()
print(v3)

  輸出結果

lingou
lingou

  

c--center( )

#center( ) 設置寬度,並將內容居中,這裡的"*"可以不寫,預設為空白。
#這裡的30是總寬度,單位位元組

 

test = "LinGou"
v4 = test.center(30,"*" )
print(v4)


輸出結果

************LinGou************

 

空白情況

test = "LinGou"
v5 = test.center(30 )
print(v5)


輸出結果

          LinGou          

  


註意這裡的"LinGou"左右兩邊都有空白的位元組

d--count( )

#count( ) 去字元串中尋找,尋找子序列的出現次數

#count(sub[, start[, end]])

#count( 子序列,尋找的開始位置,尋找的結束位置)

#count( sub, start=None, end=None) None預設表示此參數不存在

 

test = "LinGouLinGengxin"
v6 = test.count("in" )
print(v6)
v7 = test.count("in",3,6)
#這裡的3,6 是對字元串"LinGouLinGengxin"的索引編碼,從第三個開始到第六個結束
#L i n G o u L i n G  e  n  g  x  i  n
#0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
print(v7)
v8 = test.count("in",3)#從第3個位置開始找
print(v8)

輸出結果

3
0
2

  

e--endswith()、startswith()

#endswith() 以什麼什麼結尾

#startswith()以什麼什麼開始



test = "LinGouLinGengxin"
v9 = test.endswith("in" )
v10 = test.startswith("in")
print(v9)
print(v10)


輸出結果

 

True
False

  

f--find()、index()

#find()從開始往後找,找到第一個之後,獲取其索引位置
#index()功能同上,index找不到,報錯,一般建議用find()

 

test = "LinGouLinGengxin"
v11 = test.find("in" )
v12 = test.find("XING" )
v13 = test.index("in")
# v14 = test.index("XING" )
print(v11)
print(v12)
print(v13)
#print(v14)

  

輸出結果

 

1
-1
1

  

取消v14 = test.index("XING" )和print(v14)的註釋後運行程式會直接報錯
因為index找不到"XING"


g--format()

#format()格式化,將一個字元串中的占位符替換為指定的值
# { }就是占位符,通過format將占位符替換為指定的值

 

test = "I am {name}"
print(test)
v15 = test.format(name = "LinGou" )
print(v15)

  


輸出結果

I am {name}
I am LinGou

  

-第二個

test = "I am {name},age{a}"
print(test)
v16 = test.format(name = "LinGou",a = 19 )
print(v16)

  

輸出結果

I am {name},age{a}
I am LinGou,age19

  

-第三個

test = "I am {0},age{1}"
print(test)
v17 = test.format("LinGou",19 )
print(v17)

 

輸出結果

I am {0},age{1}
I am LinGou,age19

  

當占位符有數字代表,format函數里不再需要具體的name =""
這裡是按照先後順序替換的。

第四個

#format_map()格式化,傳入的值
# 書寫格式{"name":"LinGou","a":19}

 

test = "I am {name},age {a}"
print(test)
v18 = test.format_map({"name":"LinGou","a":19} )
v19 = test.format(name = "LinGou",a = "19")
print(v18)
print(v19)

  


輸出結果

I am {name},age {a}
I am LinGou,age 19
I am LinGou,age 19

  


f--isalnum( )

#isalnum( )字元串中是否只包含 字母和數字

 

test = "LinGou"
v20 = test.isalnum( )
print(v20)
test2 = "LinGou+"
v21 = test2.isalnum( )
print(v21)

  


輸出結果

True
False

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • js強大的日期格式化,timestamp支持10位或13位的時間戳,或是時間字元串,同時支持android ios的處理,不只是日期的格式化還有其它方法,比如獲 獲取某月有多少天 、獲取某個日期在這一年的第幾周、一年中的第幾天、一周中的第幾天等方法 ...
  • 一、jQuery操作DOM 內部插入操作: append(content|fn):向每個匹配的元素內部追加內容。 prepend(content):向每個匹配的元素內部前置內容。 外部插入操作: after(content|fn):在每個匹配的元素之後插入內容。 before(content|fn) ...
  • 學到原型的時候感覺頭都大了/(ㄒoㄒ)/~~ 尤其是ptototype和__proto__ 傻傻分不清 通過多番查找資料,根據自己的理解,總結如下: 一、構造函數: 構造函數:通過new關鍵字可以用來創建特定類型的對象的函數。比如像Object和Array,兩者屬於內置的原生的構造函數,在運行時會自 ...
  • 在之前一篇使用nginx搭建高可用的解決方案的時候,很多同學會問,如果nginx掛掉怎麼辦,比如下麵這張圖: 你可以清楚的看到,如果192.168.2.100這台機器掛掉了,那麼整個集群就下線了,這個問題該怎麼解決呢??? 簡單的想想確實不大好處理,因為你 的webBrowser總得要訪問一個ip地 ...
  • 一、安裝和部署 1、服務端安裝 1、官網下載(官方網站 https://www.mongodb.org/downloads/#production),傻瓜式安裝,註意修改安裝路徑。 安裝完成後的目錄結構: bin中,mongo.exe 為客戶端,mongod.exe 為資料庫: 2、配置環境變數 2 ...
  • 基準時間限制:3 秒 空間限制:131072 KB 分值: 320 難度:7級演算法題 收藏 關註 基準時間限制:3 秒 空間限制:131072 KB 分值: 320 難度:7級演算法題 基準時間限制:3 秒 空間限制:131072 KB 分值: 320 難度:7級演算法題 收藏 關註 收藏 關註 莫比烏 ...
  • ...
  • 這是閱讀《Java編髮編程實戰》這本Java多線程領域的寶典書籍的自我總結與融匯貫通的過程。現在看到了第二部分的第七章,我自己先在我們幾個人中,做一個開頭,把自己學習到的分享出來。現在只是多線程原子性總結了出來,今天陸續吧可見性和不變性都總結出來,貼上來。這些學習,都算是基礎夯實的過程,再多的框架,... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...