一、python3 數據類型
1.1 數字
例如:1,2,3,4等
1.2??int(整型)?
在32位機器上,整數的位數為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
在64位系統上,整數的位數為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
1.2.1 long(長整型)
跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由于機器內存有限,我們使用的長整數數值不可能無限大。
1.3 float(浮點型)
有理數:實數,虛數。
浮點數用來處理實數,即帶有小數的數字。類似于C語言中的double類型,占8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
1.4 復數
復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這里的x和y都是實數。
1.5 布爾值
真或假 True or False
1 或 0
1.6 字符串
"python3"
1.6.1 字符串的拼接(“+”)
python中的字符串在C語言中體現為是一個字符數組,每次創建字符串時候需要在內存中開辟一塊連續的空,并且一旦需要修改字符串的話,就需要再次開辟空間,數據量小還可以這么干,如果數據量非常大,沒必要單獨在拷貝一份相同的數據。
1.6.2 字符串格式化輸出(%占位符,{}占位符,format()方法)
name = "python3"
print? ("This is? %s "? % name)
print? ("This is? %s "? % name)
注意:%s,字符串,%d,數字,%f,浮點數
{name = "python3"}
print('I\'m {},{}'.format('python3','Welcome to my space!'))
1.7 python數據類型之 列表(list)
例子:
names = ['python2','python2.7','python3','python3.6']
print(names)
print(names)
1.7.1 select 查詢 切片
print(names[-4:])
print(names[:])
print(names[:-1])
print(names[::-1])
print(names[1:2])
print(names.index('python2'))
print(names.count('python3.6'))
1.7.2 insert 插入
names.append(1)
names.insert(1,"pth")
1.7.3 update 更新
names[1]="py"
names[:]="py"
1.7.4 del 刪除
del names[1]
del names
names.pop()
names.pop(1)
names.remove(names[1])
names.remove(“python2”)
1.8 python數據類型之 元組(tuple)
例子:
names = ('python2','python2.7','python3','python3.6','python3.6')
names.count("py")? ?### 統計py出現的次數
print(names.index('python2.7')) ###返回下標值
1.9 python數據類型之 列表(字典)
例子:
names = {'python2','python2.7','python3','python3.6','python3.6'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.clear())
#輸出:None
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
stu2 = stu.copy()
print(stu2)
name = ['tom','lucy','sam']
print(dict.fromkeys(name))
print(dict.fromkeys(name,25))? #指定默認值
#輸出:{'tom': None, 'lucy': None, 'sam': None}
#? ? ?{'tom': 25, 'lucy': 25, 'sam': 25}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.get('num2'))
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.keys())
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.valuses())
#輸出:Lucy
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.items())
#輸出:dict_items([('num2', 'Lucy'), ('num3', 'Sam'), ('num1', 'Tom')])
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.keys())
#輸出:dict_keys(['num3', 'num1', 'num2'])
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
name = stu.pop('num2')
print(name,stu)
#輸出:Lucy {'num1': 'Tom', 'num3': 'Sam'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
name = stu.popitem()
print(name,stu)
#輸出:('num2', 'Lucy') {'num3': 'Sam', 'num1': 'Tom'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
name = stu.setdefault('num5')
print(name,stu)
#輸出:None {'num1': 'Tom', 'num2': 'Lucy', 'num5': None, 'num3': 'Sam'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
stu.update({'num4':'Ben'})
print(stu)
#輸出:{'num2': 'Lucy', 'num3': 'Sam', 'num1': 'Tom', 'num4': 'Ben'}
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.clear())
#輸出:None
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
stu2 = stu.copy()
print(stu2)
name = ['tom','lucy','sam']
print(dict.fromkeys(name))
print(dict.fromkeys(name,25))? #指定默認值
#輸出:{'tom': None, 'lucy': None, 'sam': None}
#? ? ?{'tom': 25, 'lucy': 25, 'sam': 25}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.get('num2'))
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.keys())
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.valuses())
#輸出:Lucy
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.items())
#輸出:dict_items([('num2', 'Lucy'), ('num3', 'Sam'), ('num1', 'Tom')])
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
print(stu.keys())
#輸出:dict_keys(['num3', 'num1', 'num2'])
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
name = stu.pop('num2')
print(name,stu)
#輸出:Lucy {'num1': 'Tom', 'num3': 'Sam'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
name = stu.popitem()
print(name,stu)
#輸出:('num2', 'Lucy') {'num3': 'Sam', 'num1': 'Tom'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
name = stu.setdefault('num5')
print(name,stu)
#輸出:None {'num1': 'Tom', 'num2': 'Lucy', 'num5': None, 'num3': 'Sam'}
stu = {
? ? 'num1':'Tom',
? ? 'num2':'Lucy',
? ? 'num3':'Sam',
}
stu.update({'num4':'Ben'})
print(stu)
#輸出:{'num2': 'Lucy', 'num3': 'Sam', 'num1': 'Tom', 'num4': 'Ben'}
PS:注意copy 和deepcopy的區別,update和setdefault的區別。
二、python3 數據運算
算數運算:
+??
-
*
/
%
**
//
比較運算:
==
!=
<>
<
>
<=
>=
賦值運算:
=
+=
-=
*=
/=
%=
**=
//=
+??
-
*
/
%
**
//
比較運算:
==
!=
<>
<
>
<=
>=
賦值運算:
=
+=
-=
*=
/=
%=
**=
//=
邏輯運算:
and?
or
not
成員運算:
in
not in
身份運算:
is?
is not
位運算:
&? 交 與
|| 并 或
^? 異或
~? 取反
>> 左移動
<< 右移動
#!/usr/bin/env python
a = 60? ? ? ? ? ? # 60 = 0011 1100
b = 13? ? ? ? ? ? # 13 = 0000 1101
c = 0
c = a & b;? ? ? ? # 12 = 0000 1100
print "Line 1 - Value of c is ", c
??
c = a | b;? ? ? ? # 61 = 0011 1101
print "Line 2 - Value of c is ", c
??
c = a ^ b;? ? ? ? # 49 = 0011 0001 #相同為0,不同為1
print "Line 3 - Value of c is ", c
??
c = ~a;? ? ? ? ? ?# -61 = 1100 0011
print "Line 4 - Value of c is ", c
??
c = a << 2;? ? ? ?# 240 = 1111 0000
print "Line 5 - Value of c is ", c
??
c = a >> 2;? ? ? ?# 15 = 0000 1111
print "Line 6 - Value of c is ", c
三、python3 控制循環表達式
3.1? if-else
場景一、用戶登陸驗證
# 提示輸入用戶名和密碼??
# 驗證用戶名和密碼
#? ? ?如果錯誤,則輸出用戶名或密碼錯誤
#? ? ?如果成功,則輸出 歡迎,XXX!
#!/usr/bin/env python
# -*- coding: encoding -*-
username = input("輸入用戶名:")
password = input("輸入密碼:")
?if username == "python3" and password == "python3":
? print ("歡迎,%s!", % username)
?else
? ? print ("error username or password")
#!/usr/bin/env python
# -*- coding: encoding -*-
import getpass
name = input('請輸入用戶名:')
pwd = getpass.getpass('請輸入密碼:')
??
if name == "python3" and pwd == "python3":
? ? print("歡迎,%s!", % username)
else:
? ? print("用戶名和密碼錯誤")
# 驗證用戶名和密碼
#? ? ?如果錯誤,則輸出用戶名或密碼錯誤
#? ? ?如果成功,則輸出 歡迎,XXX!
#!/usr/bin/env python
# -*- coding: encoding -*-
username = input("輸入用戶名:")
password = input("輸入密碼:")
?if username == "python3" and password == "python3":
? print ("歡迎,%s!", % username)
?else
? ? print ("error username or password")
#!/usr/bin/env python
# -*- coding: encoding -*-
import getpass
name = input('請輸入用戶名:')
pwd = getpass.getpass('請輸入密碼:')
??
if name == "python3" and pwd == "python3":
? ? print("歡迎,%s!", % username)
else:
? ? print("用戶名和密碼錯誤")
PS:注意縮進格式。
3.2? if elif else
場景二、猜年齡游戲
#!/usr/bin/env python
# -*- coding: utf-8 -*-
?
my_age = 18
user_input = int(input("input your guess num:"))
if user_input == my_age:
? ? print("Congratulations, you got it !")
elif user_input < my_age:
? ? print("Oops,think bigger!")
else:
? ? print("think smaller!")
3.3? while#!/usr/bin/env python
# -*- coding: utf-8 -*-
?
my_age = 18
user_input = int(input("input your guess num:"))
if user_input == my_age:
? ? print("Congratulations, you got it !")
elif user_input < my_age:
? ? print("Oops,think bigger!")
else:
? ? print("think smaller!")
count = 0
while True:
? ? print("一直會循環99次",count)
? ? count +=1
? ? if count == 100:
? ? ? ? print("測試通過")
? ? ? ? break
while True:
? ? print("一直會循環99次",count)
? ? count +=1
? ? if count == 100:
? ? ? ? print("測試通過")
? ? ? ? break
3.4? for?
需求一:還是上面的程序,但是遇到小于5的循環次數就不走了,直接跳入下一次循環
for i in range(10):
? ? if i<5:
? ? ? ? continue #不往下走了,直接進入下一次loop
? ? print("loop:", i )
需求二:還是上面的程序,但是遇到大于5的循環次數就不走了,直接退出
for i in range(10):
? ? if i>5:
? ? ? ? break #不往下走了,直接跳出整個loop
? ? print("loop:", i )
for i in range(10):
? ? if i<5:
? ? ? ? continue #不往下走了,直接進入下一次loop
? ? print("loop:", i )
需求二:還是上面的程序,但是遇到大于5的循環次數就不走了,直接退出
for i in range(10):
? ? if i>5:
? ? ? ? break #不往下走了,直接跳出整個loop
? ? print("loop:", i )