Day02-變量_數據類型和運算符

1 數據類型

不同類型的變量可以進行的運算是不同的,所以必須理解變量的類型,python中數據類型可以分為:

  • 內置類型

    • 數值類型:整型int,浮點型float,復數(complex) 3+5j

    • str:字符串

    • bool:布爾值【True,False】

    • None:空值,表示變量沒有確定的值

    • list:列表

    • tuple:元組

    • dict:字典

    • set:集合

  • 自定義類型

    • class :類

1.1 基礎類型

  • 數值類型:

    • 整型(int): python3中只有int一種,可以表示整數,例如:10,-5,10000

    • 浮點型(float): 表示帶小數點的實數,有兩種表示法:

      • 小數表示: 1.9 .23

      • 科學計數法: 用e來表示10的指數,1e2就代表了100,注意e前面必須有數值,e后面必須為整數

    • 復數(complex):表示數學上的無理數,形如:a+bj

  • 布爾型(bool):表示事務的兩種狀態,男女、陰晴、亮暗等,它只有兩個值:True,False

  • None:表示空對象,一般用于判斷,不同于0和空字符

  • 字符串(str):在python中,用引號(單引號、雙引號、三引號)表示字符串

    • 字符串的表示

      # 用單引號表示: 'hello'
      # 用雙引號表示:"我用python"
      # 用3個單引號表示:可以表示多行文本,例如:'''偉大的祖國'''
      # 用3個雙引號表示:可以表示多行文本,例如:"""生死看淡,不服就干"""
    • 轉義字符:有些特殊字符無法從鍵盤輸入,可以使用轉義字符表示,另外,無論是單引號、雙引號還是三引號字符串,其中引號是字符串界定符,引號并不是字符串的內容,那么如何在單引號字符串中表示一個單引號呢,這也可以使用轉義字符表示。常見的轉義字符

      轉義字符描述轉義字符描述
      \'表示一個普通字符單引號\n換行
      \"表示一個普通字符雙引號\r回車
      \'''一個普通的三單引號\\一個普通的字符\
      \"""一個普通的三雙引號\a響鈴
      \ttab鍵\b回刪一個字符
    • 字符串編碼:計算機只能識別二進制,那么字符串如何存儲到計算機里呢

      計算機不能直接存儲字符串,但我們可以將字符編碼,例如用65表示大寫字符A,66表示大寫字符B....等這種表示方式就是美國類的ASCII碼,只能表示127個字符,但對于美國人來說已經足夠了。一但能用整數表示字符,我們可以很方便的把整數用二進制表示,那么字符串也就和容易存儲到計算機了。
      但還有很多其他國家的語言是不能用ASCII表示的,所有ISO組織就推出了unicode碼,用來表示任何一種語言的字符,unicode碼也稱之為萬國碼,通用碼,可以表示任何一種語言的任何一個字符。unicdoe碼有多中表示方式,例如:utf-8、utf-16、utf-32等。一般使用較多的是utf-8,utf-8是一種變長的編碼,表示一個字符可能用一個字節,也可能是三個字節
      中文常用編碼一般用GBK編碼,用2個字節表示一個漢字

1.2 類型判斷

我們可以使用type和isinstance來測試和判斷數據類型

#type用法:type(obj)功能:返回obj的數據類型參數:obj是你要測試變量或數值示例:age = 10name = 'hello'print(type(name),type(age))#判斷變量是否是指定類型if type(age) is int:print('是')else:print('否')
?
#isinstance用法:isinstance(obj,typename)功能:判斷obj是否是指定類型,是返回True,否返回False參數: objobj是你要判斷的變量或數值typename是指定數據類型,可以是int,float,str等。也可是一個類型的元組,例如:(int,float)示例:age = 10name = 'hello'  print(isinstance(age,int))print(isinstance(name,(str,int)) #只要name是str或int的一種就返回Trueif isinstance(age,int):print('是')else:print('否')#type和isinstance的區別
type判斷基本類型是沒問題的,但無法判斷子類對象是父類的一種
isinstance可以判斷子類對象是父類的一種
class A:pass
?
class B(A):pass
?
objA = A()
objB = B()
?
#輸出否
if type(objB) is A:print('是')
else:print('否')print(isinstance(objB,A))  #True

結論:優先使用isinstance

2. 運算符和表達式

在數學上為了計算結果,我們會寫一些式子計算,例如:

30 + 5

這是數學中的計算式,python中為了計算也有類似的式子,叫表達式。在表達式中30和5稱作操作數,+稱之運算符。表達式的目的在于計算結果。表達式構成:

  • 最基本的表達式就是一些數值,變量、函數,例如: 3, a(變量) print('hello')

  • 由基本表達式加上適當的運算符構成復雜的表達式: 3 + a

綜合上述,所謂表達式就是由操作數和運算符組成?符合python語法的式子。要寫表達式首先要學習運算符。關于運算符要知道兩件事情

  • 計算順序 : 是從左向右算還是從右向左算

  • 優先級 : 比如先乘除后加減

###2.1 算術運算符

a = 20

b = 10

運算符說明示例
-負號,取原數的相反數a = 10 print(-a) #-10
+ - * /加減乘除,同數學上一樣a + b = 30 a - b = 10 a * b = 200 a / b = 2
%模運算,即求 a整除以b的余數a % 10 = 0
//整除a // b = 2
**對運算符進行指數(冪)計算a ** b 表示20的10次方

####模運算說明

  • 模運算的符號取決于第二個操作數(右操作數)

  • 模運算的計算公式:r = a % b = a - n * b,其中n是小于a/b的最大整數

  • 整除(//)運算如果有一個操作數是浮點數,結果是浮點數

  • 用途:判斷奇偶、判斷是否能夠整除、最大公約數、水仙花數

數學函數

函數名函數的說明示例
abs取絕對值abs(-10)
pow(x,y)x的y次方pow(10,2)求10的平方
round(x,[n])浮點數的4舍5入, n代表保留小數的位數round(3.456)
max()求給定參數的最大值max(21,43,65,75,86,32,3,45)
min()求給定參數的最小值min(21,43,65,75,86,32,3,45)
math.ceil()需要導入import math庫 向上取整math.ceil(18.1) #19
math.floor()需要導入import math庫 向下取整math.floor(18.1) #18
math.sqrt需要導入import math庫 求平方根math.sqrt(100)

python3.5.2中文幫助文檔 https://yiyibooks.cn/xx/python_352/index.html

隨機函數

獲取隨機數,需要引入random庫。

import random

函數名函數說明
random.randrange(start,stop,step)start 指定范圍的起始值 包含本身,默認是0;stop 指定范圍的結束值 不包含本身; step 步長,默認步長是1。該函數返回一個整數
random.randint(start,end)返回[start end]之間的一個隨機整數,start必須小于end
random.random()返回一個[0.0,1.0)之間的隨機小數

注意

  • 優先級: ** >正負號 > // % * / > + -

  • 從左向右算

  • 在冪運算和一元運算符聯合計算時,從右向左算,例如: -1 ** 2 = -1

2.2 賦值運算符

a = 5; b = 10; c = 20

運算符說明示例
=簡單賦值, 將b+c的結果賦給aa = b +c #a=30
+=a += b等價于 a = a +ba = 15
-=a -= b等價于 a = a - ba = -5
*=a *= b等價于 a = a * ba = 50
/=a /= b 等價于a = a / ba = 0.5
%=a %= b等價于a = a % ba = 5
//=a //= b等價于 a = a // ba = 0
**=a **= b等價于a = a ** b?

注意:

  • 賦值運算符左邊必須是變量

  • 從右向左算

  • 沒有賦值表達式

  • 所有賦值運算符優先級相同,賦值運算符優先級非常低,僅高于成員運算符和身份運算符、邏輯運算符

  • 注意在復合賦值中

a = 2
b = 3
a *= b + 2  #等價于 a = a * (b + 2)
print(a)  # a = 10

2.3 關系運算

關系運算就是比較運算,如果表達式成立,返回True,否則返回False。關系運算的結果是布爾值。

運算符示例說明
==a == ba和b值相等,結果是True,a和b值不相等結果為False
!=a != ba不等于b 結果為True,否則結果為True
>a > ba大于b結果為True,否則為False
>=a >= ba大于等于b結果為True,否則為False
<a < ba小于b結果為True,否則為False
<=a <= ba小于等于b結果為True,否則為False

注意:

  • 優先級: 比較運算符優先級相同

  • 從左向右算

  • 可以這樣算:1 < a < 3 等價于 a > 1 and a < 3

2.4 邏輯運算

邏輯運算符可以用于構造復雜條件。邏輯運算符包括:

  • 邏輯與 and 對應漢語的意思是“并且” 、 “同時”

  • 邏輯或 or 對應漢語意思為"或者"

  • 邏輯非 not 對應漢語意思為”相反“

在邏輯運算中,False、None、0、0.0、‘’(空字符串)被看做假(False),其它的看做真(True)

2.4.1 邏輯與

aba and b
任意值b的值
任意值a的值
  • 表達式 a and b的值為: 如果a為真,結果為b的值,否則結果是a的值

2.4.2 邏輯或

aba or b
任意值a的值
任意值b的值
  • 表達式a or b的值為:如果a為真結果為a的值,否則結果是b的值

2.4.3 邏輯非

anot a
False
True

小結:a為真則表達式為False,否則表達式為True

2.4 短路計算

  • 對于邏輯與表達式 a and b,如果a為假,則不計算b

  • 對于邏輯或表達式 a or b ,如果a為真,則不計算b

2.4.5 注意事項

  • 優先級 not > and >or

2.5 身份運算符

is: 判斷兩個標識符是否引用自同一個實體【對象】,比較的是兩個對象的id是否一樣,如果相同為真,否則為假

is not:判斷兩個標識符是不是引用自不同的實體【對象】如果兩個對象的id不同結果為真,否則為假

id()函數獲取實體的id(地址)

注意:is和==的區別

  • is用于判斷兩個變量引用實體是否為同一個【id】

  • ==用于判斷兩個變量的值是否相同,但id不一定相同

2.6 成員運算符

主要應用在序列中

in:如果在指定的序列中找到指定的值,則返回True,否則返回False

not in:如果在指定的序列中未找到指定的值,則返回True,否則返回False

2.7 if-else表達式

表達式1 if 條件 else 表達式2

如果條件為真假結果是表達式1的值,否則結果是表達式2的值

?

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

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

相關文章

css hack

http://blog.csdn.net/swallowliyan/article/details/50803469轉載于:https://www.cnblogs.com/annie211/p/5934035.html

java從哪學到哪_Java JVM怎么學習啊?從哪方面入手?

叮當貓咪一、 JVM的生命周期  1. JVM實例對應了一個獨立運行的java程序它是進程級別  a) 啟動。啟動一個Java程序時&#xff0c;一個JVM實例就產生了&#xff0c;任何一個擁有public static void main(String[] args)函數的class都可以作為JVM實例運行的起點  b) 運行。m…

JMeter處理Cookie與Session

cookie 和session 的區別&#xff1a; 1、cookie數據存放在客戶的瀏覽器上&#xff0c;session數據放在服務器上。 2、cookie不是很安全&#xff0c;別人可以分析存放在本地的COOKIE并進行COOKIE欺騙 考慮到安全應當使用session。 3、session會在一定時間內保存在服務器上。當…

Maximum sum(poj 2479)

題意&#xff1a;給一段數列&#xff0c;將這個數列分成兩部分&#xff0c;使兩部分的最大子段和的和最大&#xff0c;輸出和/*看數據沒想到是(O)n的算法&#xff0c;求出從前向后的最大子段和和從后向前的最大子段和&#xff0c;然后枚舉斷點。 第一次提交不小心折在數組最小值…

java futuretask 實例_java 使用Callable+FutureTask獲取執行結果

之前給大家分享了使用CallableFuture獲取執行結果的java示例&#xff0c;那么下面要給大家分享的就是使用CallableFutureTask獲取執行結果的java示例&#xff0c;一起來看看吧。public class Test{public static void main(String[] args){//方式1ExecutorService executor Ex…

Day03-運算符和表達式

運算符和表達式? 1. 運算符的優先級 盡量不要把一個表達式寫的過于復雜&#xff0c;如果遇到復雜的需求&#xff0c;則最好分步運算 不要過多的依賴于運算符的優先級&#xff0c;否則代碼的可讀性太差&#xff0c;在實際的項目開發中&#xff0c;一般采用&#xff08;&#…

Eclipse中字母大小寫轉換快捷鍵

ctrlshiftx 轉為大寫 ctrlshifty 轉為小寫 轉載于:https://www.cnblogs.com/stsinghua/p/6418636.html

dedecms代碼研究六

今天講的是dedecms最關鍵的東西&#xff0c;模板分析啦。也就是dedetag.class.php 里面的ParseTemplet方法 模板解析方法 先看看一個dedecms標簽,大家心里有個數&#xff1a; {dede:arclist row10 orderbypubdate typeimage. imgwidth143 imgheight106} <li><a href&q…

Django-session的存放位置

django-session 存放位置 設置session的保存位置&#xff0c;有三種方法&#xff1a; 保存在關系數據庫(db)保存在緩存數據庫(cache) 或者 關系緩存數據庫(cache_db) 保存在文件系統中(file) 第一種 保存在數據庫中&#xff1a;需要在 INSTALL_APPS 中添加&#xff1a;djan…

允許多域名跨域 php,PHP設置多域名允許跨域訪問

針對 PHP 語言設置多域名允許跨域訪問服務器變量&#xff1a;服務器變量存儲在 $_SERVER 數組中&#xff0c;在這個數組中有一個特殊的鍵值&#xff1a;HTTP_ORIGIN。這個鍵只在跨域的時候才會存在值&#xff0c;同源時為空字符串響應頭設置允許某域名訪問&#xff1a;access-c…

螞蟻分類信息系統 5.8 信息瀏覽量后臺自定義設置

mymps 螞蟻分類信息是一款基于PHPMySQL的建站系統,為在各種服務器上架設分類信息以及地方門戶網站提供完美的解決方案. mymps5.8 下載 螞蟻分類系統 5.8下載 螞蟻分類系統下載 mymps下載 螞蟻分類信息系統 5.8 原信息瀏覽量后臺無法自定義&#xff0c;現增加后臺自定義瀏覽量…

MS SQL-Server快捷鍵

快捷鍵 功能 CtrlShiftB 生成解決方案 CtrlF7 生成編譯 CtrlO 打開文件 CtrlShiftC 顯示類視圖窗口 CtrlShiftO 打開項目 F4 顯示屬性窗口 ShiftF4 …

python編寫四位數驗證碼

def verifycode(request):#引入繪圖模塊from PIL import Image, ImageDraw, ImageFont#引入隨機函數模塊import random#定義變量&#xff0c;用于畫面的背景色、寬、高bgcolor (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))width 100h…

php 計算數據偏離度,關于偏離度的測算方法

2015年6月技術總結——關于偏離度的測算方法研究院公用事業部 路璐引言《原理》中說“偏離度是指每一種償債來源與財富創造能力的距離&#xff0c;所體現的是償債來源對債務安全的保障程度&#xff0c;唯有通過揭示償債來源與財富創造能力偏離度才能真正區別每一種償債來源的風…

Django中celery配置總結

情景&#xff1a; 用戶發起request&#xff0c;并等待response返回。在本些views中&#xff0c;可能需要執行一段耗時的程序&#xff0c;那么用戶就會等待很長時間&#xff0c; 造成不好的用戶體驗&#xff0c;比如發送郵件、手機驗證碼等。 使用celery后&#xff0c;情況就不…

AngularJs ng-repeat限制循環次數

重復數組&#xff1a;<ul ng-initname[1,2,3,3]><li ng-repeat"name in name track by $index">{{name}}</li> </ul> 對象&#xff1a; <ul ng-initobj{ a:"aaa", b:"bbb", c:"ccc" }><li ng-repeat…

qml demo分析(customgeometry-貝塞爾曲線)

一、效果展示 本篇文章還是帶來一個簡單的qt示例分析&#xff0c;且看圖1效果。 圖1 貝塞爾曲線 二、源碼分析 該示例代碼所在目錄quick\scenegraph\customgeometry&#xff0c;感興趣的同學可以自己去找&#xff0c;這篇文章我還是主要講解源碼&#xff0c;不涉及其他方面。 廢…

php 打包上傳的文件,PHP單文件上傳原理及上傳函數的打包

PHP單文件上傳原理及上傳函數的封裝服務器(臨時文件)——>指定目錄,當文件進入服務器時它就是臨時文件了,這時操作中要用臨時文件的名稱tmp_name。//在客戶端設置上傳文件的限制(文件類型和大小)是不安全的&#xff0c;因為客戶能通過源代碼修改限制&#xff0c;所以在服務端…

celery AttributeError: 'str' object has no attribute 'items'

AttributeError: str object has no attribute items python manage.py celery worker --loglevelinfo 查了好久發現原來是因為以前下的redis版本過高&#xff08; 3.0.1 &#xff09;&#xff0c;重裝redis pip install redis2.10.6

equals和==的區別(轉)

基本數據類型&#xff0c;也稱原始數據類型。byte,short,char,int,long,float,double,boolean&#xff0c;他們之間的比較&#xff0c;應用雙等號&#xff08;&#xff09;,比較的是他們的值。 復合數據類型(類) 當他們用&#xff08;&#xff09;進行比較的時候&#xff0c;…