#學習過程中的易忘易錯點#
命令行cd總結
跳轉到當前驅動器的根目錄:
cd c:\
cd\
跳轉到當前驅動器下一層文件:
cd coming
跳轉到當前驅動器的其他文件:
cd c:\WINDOWS
跳轉到其他驅動器:
D:
跳轉到其他驅動器的其他文件:
cd/d F:\coming
跳轉到上一層目錄:
cd..
查找當前目錄下的所有子文件:
dir
查找hello.py里的內容:
more hello.py
input&output 輸入和輸出
input
name = input('please enter your name: ')
放入xxx(姓名)在name之中
print('hello,', name)
output
常見的是print命令
字符串
字符\
如果字符串內部既包含'又包含",可以用轉義字符\來標識,比如:
'I\'m \"OK\"!'? ? ? ? ?‘\? ? “\
\n表示換行,\t表示制表符,字符\本身也要轉義,所以\\表示的字符就是\
如果字符串里面有很多字符都需要轉義,就需要加很多\,為了簡化,Python還允許用r''表示''內部的字符串默認不轉義。
>>> print(r'\\\t\\')\\\t\\
字符轉換
ord()函數獲取字符的整數表示,chr()函數把編碼轉換為對應的字符
空值
空值是Python里一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
變量
變量在程序中就是用一個變量名表示了,變量名必須是大小寫英文、數字和_的組合,且不能用數字開頭。
作業
請打印出以下變量的值:
n = 123
f = 456.789
s1 = 'Hello, world'
s2 = 'Hello, \'Adam\''
s3 = r'Hello, "Bart"'
s4 = r'''Hello,
Lisa!'''
答案:print('n=123\nf=456.789\ns1=\'Hello,world\'\ns2\'Hello,\\\'Adam\\\'\ns3=r\'Hello,\"Bart\"\'\ns4=r\'\'\'Hello,\nLisa!\'\'\'')
格式化
用%實現
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.'% ('Michael',1000000)
'Hi, Michael, you have $1000000.'
%d 整數
%f 浮點數
%s 字符串
%x 十六進制整數
不太確定應該用什么,%s永遠起作用,它會把任何數據類型轉換為字符串
字符串里面的%是一個普通字符,用%%來表示一個%
>>> 'growth rate: %d %%'%7
'growth rate: 7 %'
>>>print('%.2f' % 3.1415926)
3.14
格式化字符串的format()方法,用傳入的參數依次替換字符串內的占位符{0}、{1}……
>>> 'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明',17.125)
'Hello, 小明, 成績提升了 17.1%'
以f開頭的字符串為f-string,字符串如果包含{xxx},就會以對應的變量替換
>>> r =2.5
>>> s =3.14* r **2
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62
list
list是一種有序的集合,可以隨時添加和刪除其中的元素。
>>> classmates = ['Michael','Bob','Tracy']
>>> classmates['Michael','Bob','Tracy']
>>> classmates[0]? ? ? (從0開始,0代表第一個)
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[-1]? ?(從-1開始,0代表倒數第一個)
'Tracy'
末尾添加元素
>>> classmates.append('Adam')
>>> classmates
['Michael','Bob','Tracy','Adam']
把元素插入到指定的位置,比如索引號為1的位置
>>> classmates.insert(1,'Jack')
>>> classmates
['Michael','Jack','Bob','Tracy','Adam']
刪除list元素 pop()方法
pop()刪除末尾元素
>>> classmates.pop()
'Adam'
>>> classmates
['Michael','Jack','Bob','Tracy']
刪除指定位置的元素pop(i)方法,其中i是索引位置
>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael','Bob','Tracy']
把某個元素替換成別的元素,可以直接賦值給對應的索引位置
>>> classmates[1] ='Sarah'
>>> classmates
['Michael','Sarah','Tracy']
list元素也可以是另一個list
>>> s = ['python','java', ['asp','php'],'scheme']
>>> len(s)
4
>>> p = ['asp','php']
>>> s = ['python','java', p,'scheme']
一個空的list,它的長度為0
tuple
tuple一旦初始化就不能修改
>>> classmates = ('Michael','Bob','Tracy')
只有1個元素的tuple定義時必須加一個逗號,,來消除歧義
>>> t = (1,)
>>> t
(1,)
“可變的”tuple
>>> t = ('a','b', ['A','B'])
>>> t[2][0] ='X'
>>> t[2][1] ='Y'
>>> t
('a','b', ['X','Y'])
作業
L = [
? ? ['Apple', 'Google', 'Microsoft'],
? ? ['Java', 'Python', 'Ruby', 'PHP'],
? ? ['Adam', 'Bart', 'Lisa']
]
# 打印Apple
print(L[0][0])
# 打印Python:
print(L[1][1])
# 打印Lisa:
print(L[2][2])
判斷語句
if<條件判斷1>:
????<執行1>
elif<條件判斷2>:
????<執行2>
elif<條件判斷3>:
????<執行3>
else:
????<執行4>
input()返回的數據類型是str,str不能直接和整數比較,必須先把str轉換成整數
s = input('birth: ')
????birth = int(s)
if birth <2000:
????print('00前')
else:
????print('00后')
命令行input默認要輸入而不是程序,會在第二行出現birth:。因在vscode中寫完整個程序后調用。
作業
height=input('請輸入您的身高(M):')
weight=input('請輸入您的體重(KG):')
h=int(height)
w=int(weight)
bmi=w/h/h
if?bmi>32:
????print('嚴重肥胖')
elif?32>=bmi>28:
????print('肥胖')
elif?28>=bmi>25:
????print('過重')
elif?25>=bmi>18.5:
????print('正常')
else:
????print('偏瘦')
循環
for...in循環,依次把list或tuple中的每個元素迭代出來
names = ['Michael','Bob','Tracy']
for name in names:
print(name)
sum =0
for x in[1,2,3,4,5,6,7,8,9,10]:?
sum = sum + x
print(sum)
range()函數,可以生成一個整數序列,再通過list()函數可以轉換為list。比如range(5)生成的序列是從0開始小于5的整數:
>>>list(range(5))
[0, 1, 2, 3, 4]
作業
L?=?['Bart',?'Lisa',?'Adam']
for?x?in?L:
????print('hello,',x,'!')
break語句可以在循環過程中直接退出循環,而continue語句可以提前結束本輪循環,并直接開始下一輪循環。這兩個語句通常都必須配合if語句使用。
n =1
while n <=100:
????if n >10:? # 當n = 11時,條件滿足,執行break語句break# break語句會結束當前循環
????print(n)?
? ? n = n +1
print('END')
n =0
while n <10:?
?????n = n +1
????if n %2==0:? # 如果n是偶數,執行continue語句
????continue? ?# continue語句會直接繼續下一輪循環,后續的print()語句不會執行
print(n)
不要濫用break和continue語句
dict
方法一:
>>> d = {'Michael':95,'Bob':75,'Tracy':85}
>>> d['Michael']
95
方法二:
>>> d['Jack'] =90
>>> d['Jack']90
>>> d['Jack'] =88
>>> d['Jack']88
key-value的存儲方式中,一個key只能對應一個value,所以多次對key放入value,后面的值會把前面的值沖掉。
檢驗key存在與否:
方法一:
>>> 'Thomas' in d
False
方法二:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
可以返回None,或者自己指定的value
刪除key
>>> d.pop('Bob')
75
>>> d
{'Michael':95,'Tracy':85}
set
在set中,沒有重復的key
>>> s = set([1,1,2,2,3,3])
>>> s{1,2,3}
add(key)方法可以添加元素到set中,可以重復添加,但不會有效果
>>> s.add(4)
>>> s{1,2,3,4}
>>> s.add(4)
>>> s{1,2,3,4}
remove(key)方法可以刪除元素:
>>> s.remove(4)
>>> s{1,2,3}
set可以看成數學意義上的無序和無重復元素的集合,因此,兩個set可以做數學意義上的交集、并集等操作
>>> s1 = set([1,2,3])
>>> s2 = set([2,3,4])
>>> s1 & s2{2,3}
>>> s1 | s2{1,2,3,4}
字符串replace()
>>> a ='abc'
>>> b = a.replace('a','A')
>>> b
'Abc'
>>> a
'abc'
tuple不變,但是調用replace作用于字符串’abc‘。可以理解為tuple中坑位是不變的,只是針對坑里的東西做了置換?