天天看點

python初始,資料類型,運算符

####一、程式設計與程式設計語言

python是一門程式設計語言,搞明白三點:
1、程式設計目的?
	計算機的發展就是為了解放人力,機器是死的,是以人必須找到一種能夠被機器識别的表達式進而把自己的思想按照這個表達方式傳遞給機器,完成機器可以自發的工作。
2、什麼是程式設計語言?
	上面所說的表達方式指的就是程式設計語言。
	英文    python
	單詞    關鍵字(if while for and or)
	文法    文法
	作文    程式設計
3、什麼是程式設計?
	按照某種程式設計語言的文法風格寫程式,程式在未執行前就是一對普通檔案
           

####二、程式設計語言的分類

程式員 計算機

1、機器語言:站在計算機的校對說計算機能聽懂的話,直接用二進制程式設計,直接操作硬體。

優點:執行效率快

缺點:學習難度大,開發效率低。

2、彙編語言:站在計算機的角度說計算機能聽懂的話,用一些英文标簽來代替一串特定的意義的二進制,還是直接操作硬體。

優點:執行效率快,不如機器語言快。

缺點:學習難度大,開發效率低,比機器語言降一個難度。

3、進階語言:站在人的角度說人話,機器無法了解,是以需要翻譯。

編譯型(c):相當于百度翻譯,翻譯一次,拿着該翻譯的結果去執行。

優點:執行效率高。

缺點:開發效率低。

解釋型(python):相等于同聲傳譯,一邊解釋一邊執行。

優點:開發效率高。

缺點:執行效率低。

排序:

執行效率:從高到低

開發效率:從低到高

學習難度:從難到易

執行效率不是影響,開發效率才是王道
           

####三、寫程式的倆種方式:

互動式環境:

即時調試

檔案的方式

python3 C:\test.py

####四、變量:

#####1、什麼是變量:

變量一定是指變化的反映某種狀态的

#####2、如何定義變量?

name='mile'
password='mile123' #1
password='[email protected]' #2
#執行到現在,password的值是[email protected]
           

#####3、變量名的命名規則?

1、變量名隻能是字母、數字或者下劃線的任意組合

2、變量名的第一個字元不能是數字

#####4、定義變量的方式:

駝峰式:

AgeOfOldboy=23

下劃線:

age_of_oldboy=24

####五、常量

AGE_OF_OLDBOY=23

ps:python沒有常量,通常用全大寫表示常量。

####六、執行過程(重點!!!)

python3 c:\test.py

1、先啟動python3.exe

2、把c:\test.py從硬碟讀入到記憶體

3、解釋執行檔案内容(自動識别python文法)

####七、引用計數+垃圾回收機制

x=‘aaa’ #'aaa’這個值的引用計數為1

y=x #'aaa’這個值的引用計數為2

x=1

y=2

python初始,資料類型,運算符

ps:每次調用x這個變量,都會在記憶體中劃去一個區域,把值放到裡面,如果:x和y的值相同,會把後來指定的值的變量指向之前的區域

####八、産生一個變量的三要素(重點!!!)

name=‘mile’

#####1、變量的值:用來表示狀态;用變量名取變量值

print(name)	
           

#####2、變量的類型:表示不同的狀态應該用不同的類型的值去表示(數字:年齡,字元串:名字)

print(type(name))
           

#####3、變量值的id号:

print(id()name)
           
python初始,資料類型,運算符
python初始,資料類型,運算符
*ps:注意,這裡如果變量的值比較短,那麼值進入記憶體後,不會重新劃分新的記憶體id*、、
           

#####4、變量之間比較,

判斷變量的值是否相等:==

判斷變量的id是否相等:is

id相同,意味着type和value必定相同

value相同type肯定相同,但是id可能不同

python初始,資料類型,運算符

這裡充分說明即使a的值和b的值相同,他們的id也是不同的,充分說明每指派一次,都會在記憶體中劃分一個區域,把新的值放進去

####九、程式與使用者互動

user=input(‘請輸入賬号:’) #把使用者輸入的内容預設存為字元串類型

####十、資料類型

######1、整型(int):

#狀态:等級,身份證号,年齡
level=10   #level=int(10)
print(level,type(level),id(level))
           

######2、浮點型(float):

#狀态:薪資,身高(有零頭的)
salary=200.3	#salary=float(200.3)
print(salary,type(salary),id(salary))
           

######3、字元串(str):用引号(單引号,雙引号,三引号,python中這三種引号表示一個意思)定義的一對字元狀态,描述的内容,如名字,性别

gender='male'   #gender=str(male)
print(type(gender))

info="my name is egon i'm teacher"
#ps:注意這裡雙引号裡面嵌套單引号。

msg='''
xxx
yyy
zzz
'''
print(msg)
#三引号的意思是全部引用,裡面全是msg的值,三引号可以引用多行值。

x=1
y=2.3
res=x/y
print(res)
#ps:字元(數字)之間做運算,+—*/

a='hello'
b='world'
res=a+b
print(res)
ride=a*10
print(ride)
#ps:但是字元隻能跟字元串之間進行+;字元可以*數字
           

#####4、清單(list):在[]内,用逗号隔開,存放多個任意類型的元素狀态

#狀态:有序存放多個值
#先之前的變量表示下:
info='''
name:xxx
age:18
sex:male
'''
print(info) #注意這裡輸出的是全部内容,不能單行列印

info=[xxx,18,male,['能','education']]
print(info[0])
print(info[1])
print(info[4][0]) #注意,這裡使用的清單,但是列印出來無法得知是name,還是age,裡面可以嵌套多個列
           

練習1:清單嵌套、取值

#存放多個學生的資訊:姓名、年齡、愛好
student_info=[['x',18,['paly']],['xx',20,['paly,'sleep','eat']]]
students_info[0][2][0] #取出第一個學生的愛好
           

#####5、字典類型(dict):定義花括号{}内,用逗号分隔key:value,value可以是任意類型,但是key必須為不可變類型狀态

練習2:dict和list的嵌套、取值

#狀态:存放多個值
info1={
	'name':'xxx',
	'age':18,
	'sex':'male'
	'company':['能','enducaton']
}
####dict和list嵌套####
print(info1)
print(info1['company'])
students=[
    {'name':'alex','age':18,'hobbies':['play','sleep']},
    {'name':'egon','age':18,'hobbies':['read','sleep']},
    {'name':'egon','age':18,'hobbies':{'1':'read','2':'sleep'}}
]
#最外層為清單,然後一層為dice,然後再一層為dice
print(students)
print(students[2])
print(students[2]['hobbies'])
print(students[2]['hobbies']['1'])
#ps:注意這裡不好了解,可以一層一層的取值。
#如:
lis=['name','123','sex',['company','300']]
dic={'name':'lqx',
     'password':['123','12344567'],
     'lis':lis,
     'company':{'neng':'123','user':['user',lis[2]]}
     }
print(
dic['lis'][3], #注意這裡取的是變量lis中的值。
dic['password'][1],
dic['company'],
dic['company']['neng'],
dic['company']['user'][1]
      )
           

#####6、布爾型(bool):True False

#狀态:成立,不成立,用來做邏輯運算->判斷
print(type(True))
age=28
print(age>38) 
#ps:成立為真,即True 不成立為假,即為False
           

####十一、可變類型與不可變類型

#####1、可變類型:在id不變的情況下,value可以變,則稱為可變類型,如清單,字典

#####2、不可變類型:value一旦改變,id也改變,則稱為不可變類型(id變了意味着建立了新的記憶體空間)

python初始,資料類型,運算符

1、如圖,list和dict裡面的值變了,但是list-id和dict-id是沒有發生變化的,這個就說明是不可變類型

2、id變為不可變類型;字典和清單中的值為可變類型;

3、字典和清單列印值的時候,每取一層加一個【】

####十二、格式化輸出

name=input('name:')
age=input('age:')
print('my name is %s my age is %s' %(name,age))
print('name: %s age: %s' %(name,age))
print('name:[%s] age:{%s}' %(name,age))
#ps:注意,%s為占位符,任何輸入都會轉換為str類型的,%d也為占位符,但是輸入隻能是數字類型
           

#####字元串輸出%s

%s

%10s——右對齊,占位符10位

%-10s——左對齊,占位符10位

%.2s——截取2位字元串

%10.2s——10位占位符,截取兩位字元串

1 >>> print('%s' % 'hello world')  # 字元串輸出
 2 hello world
 3 >>> print('%20s' % 'hello world')  # 右對齊,取20位,不夠則補位
 4          hello world
 5 >>> print('%-20s' % 'hello world')  # 左對齊,取20位,不夠則補位
 6 hello world         
 7 >>> print('%.2s' % 'hello world')  # 取2位
 8 he
 9 >>> print('%10.2s' % 'hello world')  # 右對齊,取2位
10         he
11 >>> print('%-10.2s' % 'hello world')  # 左對齊,取2位
12 he       
           
python初始,資料類型,運算符

#####練習1

name=input('name:')
age=input('age:')   #這裡輸入的是一個str類型
age=int(age)		#需要在下面轉換為int類型
sex=input('sex:')
msg='''
-------------info of %s----------
name:	%s
age:	%d			#隻能接受int類型的字元
sex:	%s
--------------end---------------
'''	%(name,name,age,sex)
print(msg,type(msg),type(age))
           

#####格式化輸出小練習:

#####練習:使用者輸入姓名、年齡、工作、愛好 ,然後列印成以下格式
#------------ info of Egon -----------
#Name  : Egon
#Age   : 22
#Sex   : male
#Job   : Teacher 
#------------- end -----------------

name=input('name:')
age=input('age:')
age=int(age)
sex=input('sex:')
job=input('job:')

info1='''
------------info of %s -------------
name:   %s
age:    %d
sex:    %s
job:    %s
-------------end------------------
''' %(name,name,age,sex,job)
print(info1)
           

####十二、基本運算符

#####1、算法:

print(10%3)		#取餘
print(10**2)	#幂運算
print(10/3)		#除
print(10//3)	#取整
#另外還有+-* 3種運算符
           

#####2、比較,為真傳回Ture,為假傳回False

print(10 > 3)
print(10 < 3)
print(10 == 3)
print(10 != 3)
           

#ps:注意,is比較的是id,==比較的是值

#####3、指派

a=2
b=a		#結果:b的值為2
           

#####4、鍊式指派

a=b=c=2		#a/b/c全部指派為2,并且id相同
print(id(a),id(b),id(c))
           

#####5、交叉指派(把m的值換為n的值,把n的值換為m的值)

m=1
n=2
temp=m
m=n
n=temp
print(m,n)
#ps:上面的辦法比較複雜,一般使用下面的方式就可以實作
m,n=n,m
print(m,n)
           

#####6、解壓(清單裡的值解壓)

注意,這裡隻能解壓清單的值
l=[1,2,3,4]
a,b,c,d=l  #注意這裡必須一一對應,不然會報錯(ValueError: too many values to unpack (expected 3))
print(a,b,c,d)

a=l[0]
_=l[1]   #_在這裡也代表一個變量
_=l[2]
d=l[3]
a,_,_,d=l    #_在這裡也代表一個變量
print(a,d)

a,*_,d=l    #*_在這裡代表多個變量,或者沒有變量
print(a)
print(d)
           

#####7、指派運算符

level=1
level+=1 	#level=level+1
level-=1	 #level=level-1
print(level)
           

#####8、邏輯and or not

age=18
is_pretty=True
height=170
weight=80
print(age >= 18 and is_pretty == True and height > 160 and weight > 30 and weight < 90)

print(1 > 2 or 1 > 3 or 3 > 1 or 4 < 3)
print(not 4 > 2)