python基礎之數據類型與算術運算

一.python的編碼規範

1.分號:不要在行尾加分號,也不要使用分號將兩條命令放在同一行

2.行長度:一般情況下每行不要超過80個字符

3.括號:寧缺毋濫的使用括號

4.縮進:使用4個空格來縮進代碼

5.空行:頂級定義之間空兩行,方法定義之間空一行

6.語句:通過每個語句應該獨佔一行

7.儘量避免文件名中出現空格和中文

二、python的基本語法

python的語法比較簡單,採用縮進的方式,寫出的代碼大概是這樣的:

# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)

其中#開頭的語句是註釋,註釋是給編程人員看的,解釋器會忽略掉註釋。其他每一行就是一個語句,當語句以:冒號結尾是,縮進的語句爲代碼塊。

按照約定始終使用4個空格的縮進(不管是空格或是Tab鍵都可以),在文本編輯器中,設置把Tab自動轉成4個空格即可

​ 注意:Python程序是大小寫敏感的

三、標識符

什麼是標識符?說白了它就是一個字符串

標識符規則:

​ 1.只能由字母、數字、下劃線組成

​ 2.開頭不能是數字

​ 3.不能是python的關鍵字

​ 例如:def False True and break class del 等等

​ 4.區分大小寫

​ 5.取名字要做到見名知義

作用:

給變量、函數 , 類等命名

四、python數據類型和變量

(一)數據類型

爲什麼會有不同的數據類型

計算機是用來做數學計算的機器,因此它可以處理各種數值,但是計算機能夠處理的遠遠不止是數值,它還可以處理文本、圖形、音頻、視頻等各種各樣的數據,不同的數據要定義不同的數據類型。

python的數據類型分爲幾種?

1.Number(數字)
      ​       a.整數 :python可以處理任意大小的整數,當然包括負整數,在程序的表示方法和數學上的寫法是一模一樣的,例如:1, 100, -10等

      ​       b.浮點數:浮點數又稱小數,之所以稱之爲浮點數,是因爲按照科學計數法表示的的時候,一個浮點數的位置是可變的,比如1.23x10^5 與 12.3x10^4是相等的。[在python中浮點數的表示會有一定的誤差,這個誤差的原因是實數的無限精度跟計算機的有限內存之間的矛盾]

      注意:整數與浮點數在計算機內存的存儲方式不同,整數運輸是精確的,而浮點數運算則可能會有四捨五入的誤差。

      ​       c.複數:複數由實數部分和虛數部分組成,可以用a+bj或者complex(a,b)的形式表示,複數的實部a和虛部b都是浮點型。     
2.String(字符串)

字符串是以單引號或雙引號括起來的任意文本,比如“abc”,‘xy’等等,請注意‘’或者“”本身只是一種表示方式,並不是字符串的一部分。

a.若字符串內部包含單引號又包含雙引號怎麼辦?

print('I\'m \"ok\"')

表示的字符串內容是:

I'm "ok"

注意:轉義字符\可以轉義很多字符,比如\n表示換行,\t表示製表符,字符\本身也需要轉義,所以\\表示的字符就是\等等

>>>print('I\'m ok.')
I'm ok.
>>>print('I\'m learning\n python.')
I'm leanring
Python.
>>> print('\\\n\\')
\
\

但是,如果字符串裏面很多字符串需要轉義,就需要添加很多,爲了簡化,python還允許用r”“表示內部的字符串默認不轉義。

>>> print('\\\t\\')
\   \
>>>print(r'\\\t\\')
\\\t\\

如果字符串內部很多換行,用\n寫在一行裏不好閱讀,爲了簡化,python允許用”’…”’的格式表示多行內容:

>>> print('''line1
    line2
    line3''')
line1
line2
line3
3.Boolean(布爾值)

布爾值只有True、False兩種值,在python中可以直接用True、False表示布爾值【注意大小寫】,也可以通過布爾運算計算出來:

>>> True
True
>>> 3 > 2
True
4.None(空值)

空值是python裏一個特殊的值,用None表示,None不能爲0,而None是一個特殊的空值。

5.list(列表)

Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素

>>> list1 = ["張三", "王二", "李四"]
>>> type(list1)
<class 'list'>
6.tuple(元組)

另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改

>>> tuple1 = ("張三", "王二", "李四")
>>> type(tuple1)
<class 'tuple'>
7.dict(字典)

Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱爲map,使用鍵-值(key-value)存儲,具有極快的查找速度。

>>> dict1 = {'lisi': 89, 'lili':90}
>>> type(dict1)
<class 'dict'>
8.set(集合)

set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。

>>> set1 = {"lisi", "wanger"}
>>> type(set1)
<class 'set'>
(二)變量

變量的概念基本上和初中代數的方程變量是一致的,只是在計算機程序中,變量不僅可以是數字,還可以是任意數據類型。

1.概述:程序可操作的存儲區的名稱,在運行的期間能夠改變的數據,每個變量都是特定的類型

作用:將不同類型的數據存儲到內存中

2.變量的定義:

變量名=初始值

age = 18

注:給定初始值的原因是因爲確定變量的類型

age = 18
print('age =', age)
#查看變量的類型
print(type(age))
#查看變量的地址
print(id(age))

3.刪除變量:

del 變量名

注意:刪除後的變量無法引用

age = 18
#刪除age變量
del age
#打印age的值
print('age =', age)

注意:在Python中,等號=是賦值符號,可以把任意數據類型賦值給變量,同一個變量也可以反覆賦值,而且可以是不同類型的變量。像這種本身類型不固定的語言被稱爲動態語言

當然你也可以這麼理解,變量的類型取決於被賦的值的類型。

a = 123 #a是整數
print(a)
print(type(a))
a = 'abc' #a變爲字符串
print(a)
print(type(a))
(三)常量:

程序運行期間不能改變的數據

#常見的常量
123
'abc'

五、Number(數字)

1.數字類型之間的轉換
> int(x) :將x轉換爲一個整數

> float(x) :將x轉換爲一個浮點數
#浮點數轉爲int
print(int(1.9))
# int轉爲浮點數
print(float(1))
#字符串轉爲int
print(int('123'))
#字符串轉爲float
print(float('12.3'))
#注意:如果有其他無用字符會報錯,比如:
print(int('abc'))
#只有正負號纔有意義
print(int('+123'))
print(int('-123'))
2.數學函數

abs(x):返回數字的絕對值

(x > y)-(x < y) :比較大小,取值爲正x>y ,取值爲負x

#返回數字的絕對值
num1 = -10
num2 = abs(num1)
print(num2)

#比較兩個數的大小
num3 = 100
num4 = 8
print((num3 > num4)-(num3 < num4))

#返回給定參數的最大值
print(max(1, 2, 3, 45, 34, 12))

#返回給定參數的最小值
print(min(12354))

#求x的y次方  2^5
print(pow(2, 5))

#round(x[,n])返回浮點數x的四捨五入的值,如果給出n值,則代表舍入到小數點後n位
#默認保留整數
print(round(2.1234))
print(round(2.13334, 3))
3.math模塊的使用

導入math模塊

math.ceil(x):返回x的向上取整數值

math.floor(x):返回x的向下取整的數值

math.modf(x):返回x的整數部分和小數部分,兩部分的數值符號與x相同,整數部分以浮點數表示。

math.sqrt(x):反回數字的x的開平方根,返回類型爲實數【浮點型】

import math

#向上取整
print(math.ceil(18.1))
print(math.ceil(18.8))

#向下取整
print(math.floor(18.1))
print(math.floor(18.9))

#返回整數部分與小數部分
print(math.modf(22.123))

#開方
print(math.sqrt(16))
4.隨機數函數

導入random模塊

random.choice([1,2,3,4]) :隨機返回一個元素【從指定序列中挑選一個元素】

random.randrange(n):從0~n-1之間選擇一個隨機數

random.random() :隨機產生[0,1)之間的數,結果爲浮點數

l1 = [1, 2, 4, 5]

random.shuffle(l1) :將序列中的所有元素進行隨機排列

random.uniform(m, n) :隨機產生一個[m, n]之間的浮點數

import random

nums = range(10)
# range([start,] stop[, step])
# range()函數返回一個可迭代對象
# start:計數從start開始,默認從0開始
# stop:計數到stop結束,但不包括stop
# step: 步長,默認爲1
list(nums)
# 使用list可以把可迭代對象轉爲一個列表,返回的類型爲列表
#隨機數
print(random.choice([1,3,4,5]))
print(random.choice(range(5)))
print(random.choice("hello"))

#產生一個1~100之間的隨機數
r1 = random.choice(range(100))+1
print(r1)

#從指定範圍內,按指定的基數遞增的集合中選取一個隨機數
#random.randrange([start,]stop[, step])
#start:指定範圍的開始值,包含在範圍內,默認是0
#stop:指定範圍結束值,不包含在範圍內
#step:指定的遞增基數,默認是1
print(random.randrang(1, 100, 2))

#從0~99選取一個隨機數
print(random.randrang(100))

#隨機產生[0,1)之間的數(浮點數)
print(random.random())

#隨機產生一個實數,在[3,9]範圍內
print(random.uniform(3, 9))

list = [1, 2, 3, 23, 21]
#將序列的所有元素隨機排序
random.shuffle(list)
print(list)
5.三角函數

需要導入math模塊

六、算術運算符與表達式

算術運算符
 假設變量 a = 10, b = 20
+  :加 兩個對象相加   例如 a + b = 30
-  :減 標識負數/一個數減去另一個數  a - b = -10
*  :乘 兩個數相乘/返回一個被重複若干次的字符串 a*b=200
/  : 除 b除以a  b/a = 2
%  : 取模 返回除法的餘數  b%a = 0
** :冪,返回x的y次冪  a**b=10^20
// : 取整除返回商的整數部分  9//2=4, 9.0//2.0=4.0
算術運算表達式
3+2  3-1  8**9  5%3
功能:進行相關符號的數學運算,不會改變變量的值
值:相關的數學運算的結果

七、比較運算符

== 等於,比較對象是否相等,返回布爾類型的值

>>> a = 10
>>> b = 20
>>> print(a == b)
False

!= 不等於,比較對象是否不相等

>>> a = 10
>>> b = 20
>>> print(a != b)
True

大於,x > y,返回x是否大於y

>>> a = 10
>>> b = 20
>>> print(a > b)
False

< 小於,x < y,返回x是否小於y

>>> a = 10
>>> b = 20
>>> print(a < b)
True

‘>=’ 大於等於,x >= y,返回x是否大於等於y

>>> a = 10
>>> b = 20
>>> print(a >= b)
False

<= 小於等於,x <= y,返回x是否小於等於y

>>> a = 10
>>> b = 20
>>> print(a <= b)
True

八、賦值運算符與賦值運算表達式

賦值運算符 =
賦值運算表達式
格式:變量 = 表達式

功能:計算了等號右側的“表達式”的值,並賦值給等號左側的變量
值:賦值結束之後的變量

num1 = 10
num2 = num1 + 2

複合運算符

+=  加法賦值運算符     a += b   a = a + b
-=  減法賦值運算符     a -= b   a = a - b
*=  乘法賦值運算符     a *= b   a = a * b
/=  除法賦值運算符     a /= b   a = a / b
%=  取模賦值運算符     a %= b   a = a % b
**= 冪賦值運算符       a **= b  a = a ** b
//= 取整除賦值運算符    a //= b  a = a // b

九、邏輯運算符

and運算是與運算,只有所有都爲True,and運算的結果纔是True

>>> True and True
True
>>> True and False
False
>>> 5>3 and 3>1
True

or運算是或運算,只要其中一個爲True,or運算結果就是True

>>>True or True
True
>>>True or False
True
>>>False or False
False

not 運算是非運算,它是一個單目運算符,把True變成False,False變成True

>>> not True
False
>>> not False
True
>>> not 1>2
True

短路原則

表達式1 and 表達式2 and 表達式3 … 如果表達式1爲假,則整個表達式的值爲假,後面的表達式則沒有計算的必要

表達式1 or 表達式2 or 表達式3 … 如果表達式1爲真,則整個表達式的值爲真,後面的表達式的值就沒有計算的必要

十、位運算符

我們進行位運算的時候,我們需要把數字轉換爲二進制數來進行計算
&   按位與
|   按位或
^   按位異或
~  按位取反
<<  左移
>>  右移

1.與運算【&】

參與運算的兩個值,如果兩個相應位都爲1,則該位的結果爲1,否則爲0

3 & 2 = 2

0 1 1
0 1 0
------
0 1 0

2.按位或【|】

只要對應的兩個二進位有一個爲1時,結果位就爲1

3 | 2 = 3

0 1 1
0 1 0
-----
0 1 1

3.按位異或【^】

當兩對應的二進位相異時,結果爲1

3 ^ 2 = 1
0 1 1
0 1 0
-----
0 0 1

4.按位取反【~】

對數據的每個二進制位取反,即把1變爲0,把0變爲1

~3 = 4
0 1 1
-----
1 0 0

5.左移運算符【<<】

運算數的各二進位全部左移若干位,由”<<”右邊的數指定移動的位數,低位補0

注意:向左移動,右邊空出來的補0,左移其實就是乘以2的位數次冪

3 << 2 = 12 = 3 * 2^2 

0 1 1
------
0 1 1 0 0

6.右移運算符【>>】

把”>>”左邊的運算數的各二進位全部右移若干位,”>>”右邊的數指定移動的位數

注意:如果最高位0,右移後,用0補空位,如果最高位1,右移後,用1補空位,右移其實就是除以2的位數次冪。

3 >> 2 = 0 = 3/(2^2) 
0 1 1
-----
0 0 0 1 1

-4 >> 2 = -1
1 0 0 0  0 1 0 0
----------------
1 0 0 0  0 0 0 1 0 0

十、成員運算符

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

>>>a = 10
>>>list1 = [1, 2, 4, 5]
>>>list2 =[20, 10, 15]
>>>print(a in list1)
False
>>>print(a in list2)
True

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

>>>a = 10
>>>list = [1, 2, 4, 5]
>>>list2 =[20, 10, 15]
>>>print(a not in list)
True
>>>print(a not in list2)
False

十一、身份運算符【先不講】

is:is判斷兩個標識符是不是引用自一個對象

>>> a = 1000
>>> b = a
>>> print( a is b)
True

is not:判斷兩個標識符是不是引用自不同的對象

>>>a =1000
>>>b = 1000
>>>print(a is not b)
False

注意:在[-5, 257)的整數取值範圍內,python的內部具有緩存機制,因此在比較這個數值以內的數據可能就會有些問題。

拓展

1.字符串和數值類型可以直接輸出

>>>print(1)
1
>>>print("hello world")
hello world

2.變量,無論是什麼類型,數值,布爾,列表。字典都可以直接輸出

>>> x=12
>>>print(x)
12
>>> list1 = [1, 2, 3]
>>> print(list1)
[1, 2, 3]

3.格式化輸出

>>> s = 'hello'
>>> s
'hello'
>>> x = len(s)
>>> print("the length of %s is %d"%(s,x))
the length of hello is 5

注意,格式化輸出的時候,

1.%字符:標記轉換說明符的開始;

2.如果只有一個參數可以加括號也可以不加

3.根據類型不同使用的格式化符號也不同,

%d 整數 %f浮點型 %s 字符串

十二、分支語句

計算機之所以能夠自動化執行任務,是因爲它自己可以做條件判斷。

思考1:現有一需求,比如,輸入用戶年齡,如果小於18,則打印”未成年人禁止進入“

![370AA951-25BC-4374-B07E-4D6BA76BC694](/Users/zhangjiao/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1838887021/QQ/Temp.db/370AA951-25BC-4374-B07E-4D6BA76BC694.png)

if 判斷條件:
    執行語句...

if語句的判斷條件可以用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)來表示關係。

需求2:如果年齡小於18,則打印”未成年人禁止進入“,否則打印”歡迎光臨!“

if 判斷條件:
    執行語句...
else:
    執行語句...

分析:判斷條件:年齡小於18, 如果成立,則執行”未成年人禁止進入“,若不成立,則執行”歡迎光臨!“

age = 17
if age < 18:
    print("未成年人禁止進入")
else:
    print("歡迎光臨!")

拓展:

#可以使用ord 和chr兩個內置函數用於字符與ASCII碼之間的轉換
>>> ord('a')
97
>>> chr(97)
a
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章