python學習day4 資料型別 if語句
1.變數的記憶體管理
cpython直譯器垃圾回收機制
什麼是垃圾,當一個值身上沒有繫結變數名時,(該值的引用計數=0時)就是一個垃圾
age=18 #18的引用計數=1
x=age #18的引用計數=2
age=19 #18的引用計數=1
del x #刪除x的定義,18的引用計數=0
2.變數值具有的三個特點
id 記憶體地址
type資料型別
值 本身
id相同,值一定相同
值相同,id可以不同
python把常用的小整數型-5-256提前申請好記憶體地址,方便呼叫
因為cpu在操作硬體的核心態和應用程式的使用者態直接切換會花費時間,提前申請好節省時間
is,判斷id是否相同
==判斷值是否相同
可變型別/不可變型別
可變型別:值改變,id不變,證明就是在修改原值
不可變型別:值改變,id改變,證明不是在修改原值
x=10
print(id(x))
x=11
print(id(x))
3.python2與使用者的互動
python2中的raw_input和python3的input是一樣的效果,可以把所有輸入轉化成str字串型別
python2中的input要求使用者輸入一個明確的型別,輸入什麼型別,就存成什麼型別
4.資料型別
作用:用來記錄狀態
4.1整型int
作用:可以用來記錄年齡,等級,各種號碼狀態
定義age=18
age=int(18)
print(type(age))
print(age+3)
print(age>3)
4.2浮點型
作用:用來記錄身高,體重,工資等狀態
salary=3.1
print(type(salar))
print(3.1+2.3)
print(3.1+2)
4.3字串型別str(一堆字母拼接在一起)
作用:用來記錄描述性質的狀態 比如名字 性別
定義:在單引號(’‘)雙引號(“”)、三引號(’‘’‘’‘,“”“”“”),包含一系列的字元
x='abc'
y="abc"
z='''
abc
xxxx
'''
print(type(x))
引號的巢狀,要區分開msg='name is "egon"'
print('abc'+'efg') #僅限於str型別直接相加
print('abc'*10) # *的只能是數字
print('a'> 'Z') #按ASCII碼錶對照比較大小
4.3列表型別list
作用:用來記錄多個值,用索引對應值,索引反映是位置
定義:在[]內用逗號分隔開多個任意型別的值
l=[1,3.1,'xxx',['a','b','c']
print(type(l))
print(l[3][0])
4.4字典型別
作用:用來記錄多個值,用key對應value,其中key對value有描述性的功能
定義:在{}內,用逗號分割開多元素,每一個元素都是key:value的形式,其中value可以是任意型別,key一般是str型別
d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':11111}}
print(type(d))
呼叫
print(d['x'])
print(d['m']['aaa'])
print(d['z'][1])
# name age gender compay_info
# emp_info=['egon',18,'male',['Oldboy','SH',200]]
# print(emp_info[1])
# print(emp_info[3][2])
# 字典的方式
# emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]}
# print(emp_info['age'])
# print(emp_info['company_info'][0])
# names=['egon','alex','kevin']
# dic={'name1':'egon','name2':'alex','name3':'kevin'}
# 列表的方式
# name age gender compay_info
# emp_info=['egon',18,'male',['Oldboy','SH',200]]
# print(emp_info[1])
# print(emp_info[3][2])
# 字典的方式
# emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]}
# print(emp_info['age'])
# print(emp_info['company_info'][0])
# names=['egon','alex','kevin']
# dic={'name1':'egon','name2':'alex','name3':'kevin'}
列表的方
4.5 布林型:True False
print(type(True))
print(type(False))
tag1=True
tag2=True
print(id(tag1))
print(id(tag2))
所有資料都自帶布林值
布林值為假的資料型別:0,None,空
print(bool([]))
print(bool(''))
print(bool(None))
4.6None
print(type(None))
5.基本運算子
比較運算子
> >=
< <=
==
!=
print(10!=11)
x=None
print(x ==None)
print(x is None)
l1=['abc',1,['a','b','c']]
l2=['abc','aa]
print(l2>l1) #從第一個資料開始比較,必須是同一個資料型別
邏輯運算子
and 連線左右兩個條件,必須兩個同時成立,and運算結果才為True
print(10>9 and 3>2 and 'egon'=='egon')
or 連線左右兩個條件,兩個條件成立任意一個or運算的結果就為True
res=(False or False or True or False or 3>10)
可以加括號,優先運算括號內公式
not 非運算子 把緊接其後的條件取反
x=None
print(not is None)
print(x is not None)
age1=18
age2=19
print(age2 is not age1)
name_bk='egon'
pwd_bak='123'
name=input('please input your name: ')
pwd=input('please input your password: ')
if name == name_bk and pwd == pwd_bak:
print('login successfull')
print('login successfull')
print('login successfull')
print('login successfull')
print('login successfull')
else:
print('username or password error')