Python之路(第二篇):Python基本數據類型字符串(一)

一、基礎
1、編碼
UTF-8:中文占3個字節
GBK:中文占2個字節
Unicode、UTF-8、GBK三者關系

ascii碼是只能表示英文字符,用8個字節表示英文,unicode是統一碼,世界通用碼,規定采用2個字節對世界各地不同文字進行編碼,gbk是針對中國漢字提出的編碼標準,用2個字節對漢字進行表示。utf8是對unicode的升級改進版,但是unicode到utf-8并不是直接的對應。

UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度,當字符在ASCII碼的范圍時,就用一個字節表示,保留了ASCII字符一個字節的編碼做為它的一部分,注意的是unicode一個中文字符占2個字節,而UTF-8一個中文字符占3個字節。

ascii和unicode可以相互轉換,gbk和unicode可以相互轉換。



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 :passelse:print(n)n = n + 1

  


或者

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

 

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

?

再比如

?

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

  

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

第二個例子

count = 1
while count < 11:count = count + 1print(count)breakprint('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 左側表達式 (即True)。

?表達式從左至右運算,若 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_lenghth
當前數字的二進制,至少用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更牛逼,很多未知(不是英文的,如法文、德文等)的對相應變小寫

#lower() 方法只對ASCII編碼,也就是‘A-Z’有效,對于其他語言(非漢語或英文)中把大寫轉換為小寫的情況只能用 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",而find()找不到會返回-1


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

  分析:這里的v18和v19是等價的,只是書寫方式不一樣。format_map后面加的是字典。


h--isalnum( )

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

?

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

  


輸出結果

True
False

  

?

轉載于:https://www.cnblogs.com/Nicholas0707/p/8542913.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539199.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539199.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539199.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python ftp下載文件_文件上傳下載Python

點擊上方藍字關注我&#xff01;圖片來源 pexels.com簡單實現文件上傳、下載1 Server端 # -*- coding: utf-8 -*-import jsonimport os__author__ sange# Time : 2020/8/17 下午5:26# Author : sange# File : tcpserver_socket.py# Software: PyCharmimport socketserv…

hive列定義

修改 列的名稱、類型、位置、注釋 hive>ALTER TABLE t3 CHANGE COLUMN old_name new_name String [COMMENT ...] [AFTER column2]; 實例 hive (zmgdb)> alter table t1 change column car sarly int after office; FAILED: Execution Error, return code 1 from org.a…

react json轉換_Typescript + React 新手篇

極鏈科技前端工程師茅丹丹前言 TS是什么Type Type (標準JS)。TS的官方網站&#xff1a;Type is a typed superset of Java that compiles to plain Java。Type是一個編譯到純JS的有類型定義的JS超集。 TS優點 TS 最大的優勢是它提供了強大的靜態分析能力&#xff0c;結合 TSL…

android listview 滑動條顯示_第七十六回:Android中UI控件之RecyclerView基礎

各位看官們&#xff0c;大家好&#xff0c;上一回中咱們說的是Android中UI控件之ListView優化的例子&#xff0c;這一回咱們說的例子是UI控件之RecyclerView。閑話休提&#xff0c;言歸正轉。讓我們一起Talk Android吧&#xff01;看官們&#xff0c;我們在前面章回中介紹了Lis…

數據建模大數據就業挑戰月薪30K

點擊關注 異步圖書&#xff0c;置頂公眾號每天與你分享 IT好書 技術干貨 職場知識本文大概 10624 字讀完共需 30 分鐘Tips 參與文末話題討論&#xff0c;即有機會獲得異步圖書一本。數據建模是對現實世界各類數據進行抽象組織、界定數據庫需管轄的范圍、確定數據的組織形式等直…

Hive的數據模型-管理表

概述 管理表&#xff0c;也稱作內部表,受控表。 所有的 Table 數據&#xff08;不包括 External Table&#xff09;都保存在warehouse這個目錄中。 刪除表時&#xff0c;元數據與數據都會被刪除。 在加載數據的過程中&#xff0c;實際數據會被移動到數據倉庫目錄中&#xff1b…

mft按鈕設計_火力發電廠典型MFT邏輯控制實現.pdf

火力發電廠典型MFT邏輯控制實現.pdf火力發電廠典型MFT邏輯控制實現劉文豐 陳思銘湖南省電力試驗研究院 (湖南長沙410007)摘要&#xff1a;以金竹山電廠擴建工程國產2600MW亞臨界機組為例&#xff0c;概述了必力發電廠FSSS中典型MFT的原理及重要性&#xff0c;詳細介紹各MFT條件…

oracle schema_oracle數據庫全局統計更新

--oracle數據庫優化 替換用戶名 user&#xff0c;在該用戶下執行begindbms_stats.gather_schema_stats(ownname >USER,options > GATHER,estimate_percent > dbms_stats.auto_sample_size,method_opt > for all columns size skewonly,degree > 7 );end;————…

python操作三大主流數據庫(12)python操作redis的api框架redis-py簡單使用

python操作三大主流數據庫(12)python操作redis的api框架redis-py簡單使用 redispy安裝安裝及簡單使用&#xff1a;https://github.com/andymccurdy/redis-pyapi參考文檔&#xff1a;http://redis-py.readthedocs.io/en/latest/ 1.安裝redis-py pip install redis C:\Users\ajie…

Hive的數據模型-外部表

概述 包含External 的表叫外部表 刪除外部表只刪除metastore的元數據&#xff0c;不刪除hdfs中的表數據 外部表 只有一個過程&#xff0c;加載數據和創建表同時完成&#xff0c;并不會移動到數據倉庫目錄中&#xff0c;只是與外部數據建立一個鏈接。當刪除一個 外部表 時&…

對github的初步認識以及對軟件技術基礎課程的期待

對github的初步認識&#xff1a; Git是一個開源的分布式版本控制系統&#xff08;版本控制是一種記錄一個或若干文件內容變化&#xff0c;以便將來查閱特定版本修訂情況的系統&#xff09;&#xff0c;客戶端并不只提取最新版本的文件快照&#xff0c;而是把代碼倉庫完整地鏡像…

centos默認安裝mysql_centos6.x默認安裝mysql5.7

1. yum 安裝 mysql5.7 yum 源yum localinstall mysql57-community-release-el6-8.noarch.rpm2. 查看是否成功安裝MySQL Yum Repositoryyum repolist enabled|grep ""mysql.*-community.*3. 安裝mysqlyum install mysql-community-server4.開啟數據庫服務service mys…

Hive的數據模型-分區表

需求 select * from t1 where xxxx; 這是全表掃描的。實際應用中&#xff0c;有時候不一定需要全表掃描。 比如電信的日志文件&#xff0c;一個表里存了從去年到現在的日志文件&#xff0c;那是很多很大的&#xff0c;實際需求要查今天的&#xff0c;如果用上面的sql&#xf…

arduino 停止程序_建立Arduino機器人,第五部分:障礙規避

歡迎閱讀教程系列的第五篇文章&#xff0c;其中我正在構建一個基于遙控Arduino的車輛機器人。這是我到目前為止發表的文章列表&#xff1a;第一部分&#xff1a;硬件組件第二部分&#xff1a;Arduino編程第三部分&#xff1a;組裝機器人第四部分&#xff1a;A(不是那樣)基本機器…

debug error怎么解決_我要以血和淚的經歷告訴你,這個 bug 太難解決了

[npm install報錯: npm WARN tar ENOENT: no such file or directory]npm installnpm WARN deprecated request2.88.2: request has been deprecated, see request/request#3142npm WARN deprecated mkdirp0.5.1: Legacy versions of mkdirp are no longer supported. Please u…

Yarn簡單介紹及內存配置

在這篇博客中&#xff0c;主要介紹了Yarn對MRv1的改進&#xff0c;以及Yarn簡單的內存配置和Yarn的資源抽象container。我么知道MRv1存在的主要問題是&#xff1a;在運行時&#xff0c;JobTracker既負責資源管理又負責任務調度&#xff0c;這導致了它的擴展性、資源利用率低等問…

mysql計算時間函數_mysql時間計算函數

當前一個業務需求&#xff0c;需要查找創建在三天以前的數據&#xff0c;表中是存了一個創建時間的&#xff1b;這個需求看起來很簡單&#xff0c;直接全部查找出來然后用代碼根據時間篩選一下就可以了。但這只是適用于數據量不大的情況下&#xff0c;如果數據量大&#xff0c;…

html上傳文件_.NET基于WebUploader大文件分片上傳、斷網續傳、秒傳

(給DotNet加星標&#xff0c;提升.Net技能)轉自&#xff1a;學習中的苦與樂cnblogs.com/xiongze520/p/10412693.html現在的項目開發基本上都用到了上傳文件功能&#xff0c;或圖片&#xff0c;或文檔&#xff0c;或視頻。我們常用的常規上傳已經能夠滿足當前要求了&#xff0c;…

Hadoop運行任務時一直卡在: INFO mapreduce.Job: Running job

原文鏈接&#xff1a;http://blog.csdn.net/dai451954706/article/details/50464036 ----------------------------------------------------------------------------------------------------- 今天&#xff0c;一大清早同事就讓我幫他解決Hive的問題&#xff1a;他在Hive中…

git切換用戶密碼_Git 最基本的命令

本人比較懶&#xff0c;不是很愛學習新東西&#xff0c;之前用Git一直在用GUI SourceTree&#xff0c;今天因為用到Cloud IDEGitHub才迫不得已用一下Git的命令行&#xff0c;如果你是Git的新手&#xff0c;也分享給你最基本的命令。新建一個Git版本庫把一個本地文件夾變成一個G…