一、 基本數據類型
爲何數據要區分類型?
數據類型值的是變量值的類型,變量值之所區分類型,是因爲變量值是用來記錄事物狀態的,而事物的狀態有不同的種類,對應着,也必須使用不同類型的值去記錄它們。
(一)、數字類型
1、整型int
作用:記錄年齡、等級、數量等
定義:age = 18
使用:數學運算 print(10 / 3)
與比較運算print(10 > 3)
2、浮點型float(有小數點)
作用:記錄薪資、身高、體重等
定義:salary = 3.1
使用:數學運算print(3.1 + 2)
與比較運算print(3.1 > 2)
&ensp浮點型和整數型可混用
(二)、字符串str
作用:記錄描述性質的狀態
定義:在單引號/雙引號/三引號中包含一系列字符,例如name = 'mumoon'
使用:msg=' my name is " mumoon " '
,在字符串中要使用多個引號,引號類型要不同。
字符串的加法
+(加號):拼接字符串
例如
x='hello'
y='world'
print(x + y) # 結果是helloworld
而print(x + 10)
報錯,因爲字符串只能與字符串相加。我們一般不推薦用+(加號)拼接字符串,浪費內存空間。
字符串的乘法
*(乘號)循環輸出數遍
例如
print('mumoon'*3) # 結果是mumoonmumoonmumoon
(三)、 列表類型list
作用:按照位置記錄多個同種屬性的值(索引對應值,索引從0開始,代表的就是位置),並且可以取出指定位置的某一個值
定義:在[](中括號)內用逗號分隔開多個任意類型的值
例如:
L1=[100,3.2,'aaa',['a','b',['d','e']]]
使用:
print(L1[0]) # 結果是100
print(L1[3][2][1]) # 結果是e
練習:取出第一個學生的第一個愛好
students_info=[['mumoon',18,['Reading',]],['Hysen',25,['Swimming','Cooking']]]
print(students_info[0][2][0])
(四)、字典類型dict
作用:記錄多個不同屬性的值
定義:在{}(大括號)內用逗號分開個多個元素,每一個元素都由key : value組成,value就是我們存放的值,可以是任意類型,一個key唯一對應一個value,key應該對value有描述性的功能,所以key通常是str類型。
dic={'name':'mumoon','age':18,'gender':'male'}
使用:
print(dic['name']) # 結果是mumoon
print(dic['age']) # 結果18
練習:取出公司名
info={
'name' : 'mumoon',
'hobbies' : ['play' , 'sleep'],
'company_info' : {
'name' : 'Hi、Ason',
'type' : 'education',
'emp_num' : 40,
}
}
print(info['company_info']['name']) # 結果是Hi、Ason
選擇數據類型的方法(列表Or字典)
全班同學的信息,每個同學的信息都是相同屬性的值,但是信息裏面包含的例如姓名,年齡是不同屬性的值,所以用下面這種方式定義。
info=[
{'name':'Hysen','age':18,'sex':'male','height':1.81,'weight':70},
第二個學生的信息,
第三個學生的信息,
]
(五)、布爾類型bool:True、False
作用:用於判斷
定義:
x=True
y=False
print(10 > 11) # 結果是False
print(10 == 10) # 結果是True
強調:所有的數值都自帶布爾值,其中0、None、空布爾值爲False,其餘都爲True
例如:
if []:
print('ok') # True打印ok
else:
print('不 ok') # False打印不ok,因爲[]是空,空的布爾值是False,所以最後結果是不ok
二、與用戶交互(輸出輸入)
1、接收用戶輸入
name = input('請輸入你的用戶名: ') # name='mumoon'
print(name)
2、格式化輸出
如何動態地顯示這麼一句話:My name is xxx ,my age is xxx,姓名和年齡會根據用戶輸入的不同而顯示不同。
首先我們要提示用戶輸入姓名和年齡:
name = input('Your name: ')
age = input('Your age: ')
方法一:我們可以用字符串拼接的方法
print('my name is '+name+' my age is '+age)
我們之前說過不提倡這種方式,因爲會浪費內存,所以我們用下面這種方法。
print('my name is %s my age is %s' %(name,age))
注意%d只能接收數字,%s可以接受所有類型
擴展
在python3中只有一個input:input會將用戶輸入的任何內容都存成字符串類型
x = input('請輸入: ') # 輸入[1,2,3]
print(type(x)) # <class 'str'>
在python2中有兩種接收用戶輸入的機制:
- raw_input:等同於python3的input
- input:要求輸入者必須輸入的一個明確的數據類型,輸入什麼類型就存成什麼類型
程序的目的是爲了便利用戶,這也是Python3捨棄Python2中的input的原因。
三、運算符
1、算數運算符
假設變量x=3,y=7
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 - 兩個對象相加 | x + y 輸出結果 10 |
- | 減 - 得到負數或是一個數減去另一個數 | x - y 輸出結果 -4 |
* | 乘 - 兩個數相乘或是返回一個被重複若干次的字符串 | x * y 輸出結果21 |
/ | 除 - y 除以 x | y/ x 輸出結果 2.3 |
% | 取餘 - 返回除法的餘數 | y % x 輸出結果 1 |
** | 冪 - 返回y的x次冪 | y ** x 輸出結果343 |
// | 取整 - 向下取接近除數的整數 | y // x 輸出結果 2 |
2、比較運算符
所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。
假設變量x=3,y=7
運算符 | 描述 | 實例 |
---|---|---|
== | 等於 - 比較對象是否相等 | (x == y) 返回 False |
!= | 不等於 - 比較兩個對象是否不相等 | (x != y) 返回 True |
> | 大於 - 返回x是否大於y | (x > y) 返回 False |
< | 小於 - 返回x是否小於y | (x < y) 返回 True |
>= | 大於等於 - 返回x是否大於等於y | (x > =y) 返回 False |
<= | 小於等於 - 返回x是否小於等於y | (x < =y) 返回 True |
字符串比較
例子
x='abcdef'
y='abcz'
print(x > y) # 結果是False,ASCII中表示z的數值比表示d的大
字符串不能和數字比較,下面代碼會報錯
L1=[2,'abc',3]
L2=[2,3]
print(L2 >L1)
3、賦值運算符
假設變量x=3,y=7
運算符 | 描述 | 實例 |
---|---|---|
= | 簡單的賦值運算符 | z= x + y 將 x + y 的運算結果賦值爲 z |
+ = | 加法賦值運算符 | z += x 等效於 z = z + x |
-= | 減法賦值運算符 | z -= x 等效於 z = z - x |
* = | 乘法賦值運算符 | z *= x 等效於 z = z * x |
/= | 除法賦值運算符 | z /= x 等效於 z = z / x |
% = | 取餘賦值運算符 | z %= x 等效於 z = z % x |
**= | 冪賦值運算符 | z **= x 等效於 z = z ** x |
//= | 取整賦值運算符 | z //= x 等效於 z = z // x |
3.1 交叉賦值
x=11
y=22
temp=x
x=y
y=temp
上述代碼可以合併爲下面這樣
x=11
y=22
x,y=y,x
3.2 鏈式賦值
x=10
y=x
z=y
上述代碼可以合併爲下面這樣
x=y=z=10
x,y,z的內存地址一樣
3.3 解壓賦值
L=['a','b','c','d','e']
x=L[0] # a
y=L[1] # b
z=L[2] # c
m=L[3] # d
n=L[4] # e
print(x,y,z,m,n) #結果是 a b c d e
用下面這種方法同樣可以取得相同的結果
x,y,z,m,n=L
print(x,y,z,m,n)
等號左邊的變量名必須與右面所包含的值一一對應,否則會報錯。
取頭尾的方法
x,y,*_,z=L
print(x,y,_,z) #結果是 a b ['c', 'd'] e
4、邏輯運算符
假設變量x=3,y=7
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" - 如果 x 爲 False,x and y 返回 False,否則它返回 y 的計算值 | (x and y) 返回 7 |
or | x or y | 布爾"或" - 如果 x 是 True,它返回 x 的值,否則它返回 y 的計算值 | (x or y) 返回 3 |
not | not x | 布爾"非" - 如果 x 爲 True,返回 False 。如果 x 爲 False,它返回 True。 | not(x and y) 返回 False |
and:邏輯與,用來連接左右兩個條件,在左右兩個條件同時爲True的情況下,最終結果才爲True
or:邏輯或,用來連接左右兩個條件,左右兩個條件但凡有一個爲True,最終結果就爲True
not:取反
print(not 10 > 3) # 結果是False
5、身份運算符
==:判斷的是值是否相等
is:判斷的是id是否相等
拾遺
平臺:操作系統+ 硬件= 應用軟件的運算平臺
註釋
#單行註釋
“”"
多行註釋
多行註釋
多行註釋
“”"
重要代碼進行註釋可增強可讀性,但不是註釋越多越好,可寫在代碼前,也可寫在代碼後。