1、了解python歷史哲虾、優(yōu)缺點和安裝步驟
略
2是目、第一個python程序
1)交互式環(huán)境
Python 3.9.4 (default, Apr 5 2021, 01:49:30)
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
2)更好的交互環(huán)境ipython
3)文本編輯器
4)集成開發(fā)環(huán)境-PyCharm
表1. PyCharm常用快捷鍵
說明:使用macOS系統(tǒng)墨叛,可以將上面的ctrl鍵換成command鍵博其,在macOS系統(tǒng)上,可以使用ctrl + space組合鍵來獲得萬能提示植旧,在Windows系統(tǒng)上不能使用該快捷鍵辱揭,因為它跟Windows默認的切換輸入法的快捷鍵是沖突的,需要重新設置病附。
'''
我的第一個python程序
Version:1.0
Author:kk
'''
#print("Hello问窃,World!")
print("您好,世界完沪!")
3泡躯、python語言元素之變量
1)常用數(shù)據(jù)類型:
整型(int):Python中可以處理任意大小的整數(shù),而且支持二進制(如0b100丽焊,換算成十進制是4)、八進制(如0o100咕别,換算成十進制是64)技健、十進制(100)和十六進制(0x100,換算成十進制是256)的表示法惰拱。
浮點型(float):浮點數(shù)也就是小數(shù)雌贱,之所以稱為浮點數(shù),是因為按照科學記數(shù)法表示時偿短,一個浮點數(shù)的小數(shù)點位置是可變的欣孤,浮點數(shù)除了數(shù)學寫法(如123.456)之外還支持科學計數(shù)法(如1.23456e2)。
字符串型(str):字符串是以單引號或雙引號括起來的任意文本昔逗,比如'hello'和"hello"降传。
布爾型(bool):布爾值只有True、False兩種值勾怒,要么是True婆排,要么是False声旺。
2)變量命名
硬性規(guī)則:
規(guī)則1:變量名由字母、數(shù)字和下劃線構(gòu)成段只,數(shù)字不能開頭腮猖。需要說明的是,這里說的字母指的是Unicode字符赞枕,Unicode稱為萬國碼澈缺,囊括了世界上大部分的文字系統(tǒng),這也就意味著中文炕婶、日文姐赡、希臘字母等都可以作為變量名中的字符,但是像!古话、@雏吭、#這些特殊字符是不能出現(xiàn)在變量名中的,而且我們強烈建議大家盡可能使用英文字母陪踩。
規(guī)則2:大小寫敏感杖们,簡單的說就是大寫的A和小寫的a是兩個不同的變量。
規(guī)則3:變量名不要跟Python語言的關鍵字(有特殊含義的單詞肩狂,后面會講到)和保留字(如已有的函數(shù)摘完、模塊等的名字)發(fā)生重名的沖突。
非硬性規(guī)則:
規(guī)則1:變量名通常使用小寫英文字母傻谁,多個單詞用下劃線進行連接孝治。
規(guī)則2:受保護的變量用單個下劃線開頭。
規(guī)則3:私有的變量用兩個下劃線開頭审磁。
3)變量的使用
舉例說明變量的類型和變量的使用
'''
使用變量保存數(shù)據(jù)并進行加減乘除
Version:1.0
Author:kk
'''
a = 60 #變量a保存了60
b = 20 #變量b保存了20
print(a + b)#80
print(a - b)#40
print(a * b)#1200
print(a / b)#3.0
'''
使用type函數(shù)檢查變量類型
Version:1.0
Author:kk
'''
a = 60
b = 20.123
c = 'hello world'
d = True
print(type(a))#<class 'int'>
print(type(b))#<class 'float'>
print(type(c))#<class 'str'>
print(type(d))#<class 'bool'>
4)變量的轉(zhuǎn)換
不同類型的變量可以相互轉(zhuǎn)換谈飒,這一點可以通過Python的內(nèi)置函數(shù)來實現(xiàn)
int():將一個數(shù)值或字符串轉(zhuǎn)換成整數(shù),可以指定進制态蒂。
float():將一個字符串轉(zhuǎn)換成浮點數(shù)杭措。
str():將指定的對象轉(zhuǎn)換成字符串形式,可以指定編碼钾恢。
chr():將整數(shù)轉(zhuǎn)換成該編碼對應的字符串(一個字符)手素。
ord():將字符串(一個字符)轉(zhuǎn)換成對應的編碼(整數(shù))。
舉例說明變量的轉(zhuǎn)換
'''
python類型轉(zhuǎn)換
Version:1.0
Author:kk
'''
a = 60
b = 20.123
c = 'hello world'
d = True
#整數(shù)轉(zhuǎn)換為浮點數(shù)
print(float(a))#60.0
#浮點型轉(zhuǎn)換為字符串(輸出字符串時不會看到引號哦)
print(str(b))#20.123
#字符串轉(zhuǎn)為布爾型(有內(nèi)容的字符串都會變成True)
print(bool(c))#True
#布爾型轉(zhuǎn)為整數(shù)(true為1瘩蚪,false為0)
print(int(d))#1
#整數(shù)轉(zhuǎn)為對應字符(97剛好對應字符表中的字母a)
print(chr(97))#a
#將字符轉(zhuǎn)為對應整數(shù)(Python中字符和字符串表示法相同)
print(ord('a'))#97
小結(jié):在python程序中泉懦,我們可以使用變量來保存數(shù)據(jù),變量有不同的類型疹瘦,變量可以進行運算崩哩,也可以通過內(nèi)置函數(shù)轉(zhuǎn)換變量類型
4、python語言元素之運算符
1)運算符
說明: 上面這個表格實際上是按照運算符的優(yōu)先級從上到下列出了各種運算符言沐。所謂優(yōu)先級就是在一個運算的表達式中琢锋,如果出現(xiàn)了多個運算符辕漂,應該先執(zhí)行哪個運算再執(zhí)行哪個運算的順序。在實際開發(fā)中吴超,如果搞不清楚運算符的優(yōu)先級钉嘹,可以使用圓括號來確保運算的執(zhí)行順序。
2)算術運算符
舉例
'''
python算術運算符
Version:1.0
Author:kk
'''
print(456 + 123)#加法
print(456 - 123)#減法
print(456 * 123)#乘法
print(456 / 123)#除法
print(456 % 123)#求模
print(456 // 123)#整除
print(456 ** 123)#求冪
3)賦值運算符
賦值運算符應該是最為常見的運算符鲸阻,它的作用是將右邊的值賦給左邊的變量
舉例
'''
python賦值運算符
Version:1.0
Author:kk
'''
a = 10
b = 3
a += b #相當于a=a+b
a *= a + 2#相當于a=a*(a+2)
print(a)
比較運算符有的地方也稱為關系運算符跋涣,包括==、!=鸟悴、<陈辱、>、<=细诸、>=
邏輯運算符有三個沛贪,分別是and、or和not
'''
比較運算符和邏輯運算符的使用
Version:1.0
Author:kk
'''
flog0 = 1 == 1
flog1 = 3 > 2
flog2 = 2 < 1
flog3 = flog1 and flog2
flog4 = flog1 or flog2
flog5 = not (1 != 2)
print("flog0 = ",flog0)#true
print("flog1 = ",flog1)#true
print("flog2 = ",flog2)#false
print("flog3 = ",flog3)#false
print("flog4 = ",flog4)#true
print("flog5 = ",flog5)#false
說明:比較運算符的優(yōu)先級高于賦值運算符震贵,所以
flag0 = 1 == 1
先做1 == 1
產(chǎn)生布爾值True
利赋,再將這個值賦值給變量flag0
。,
進行分隔媚送,輸出的內(nèi)容之間默認以空格分開。
4)舉例
例子1:華氏溫度轉(zhuǎn)換為攝氏溫度寇甸。
提示:華氏溫度到攝氏溫度的轉(zhuǎn)換公式為:C = (F - 32) / 1.8塘偎。
'''
將華氏溫度轉(zhuǎn)換為攝氏溫度
注:華氏溫度到攝氏溫度的轉(zhuǎn)換公式為:C = (F - 32) / 1.8
Version:1.0
Author:kk
'''
f = float(input("請輸入華氏溫度:"))
c = (f - 32) / 1.8
print("%.1f華氏度 = %.1f攝氏度" % (f,c))
說明:在使用print函數(shù)輸出時,也可以對字符串內(nèi)容進行格式化處理拿霉,上面print函數(shù)中的字符串%.1f是一個占位符吟秩,稍后會由一個float類型的變量值替換掉它。同理绽淘,如果字符串中有%d峰尝,后面可以用一個int類型的變量值替換掉它,而%s會被字符串的值替換掉收恢。除了這種格式化字符串的方式外,還可以用下面的方式來格式化字符串祭往,其中{f:.1f}和{c:.1f}可以先看成是{f}和{c}伦意,表示輸出時會用變量f和變量c的值替換掉這兩個占位符,后面的:.1f表示這是一個浮點數(shù)硼补,小數(shù)點后保留1位有效數(shù)字驮肉。
例子2:輸入圓的半徑計算計算周長和面積。
提示:圓的周長:C=πd=2πr已骇,圓的面積S=πr
'''
輸入圓的半徑計算圓的周長和面積
注:提示:圓的周長:C=πd=2πr离钝,圓的面積S=πr
Version:1.0
Author:kk
'''
radius= float(input('請輸入圓的半徑: '))
perimeter = 2 * 3.1416 * radius #計算周長
area = 3.1416 * radius #計算面積
print('周長:%.2f' % perimeter)
print('面積:%.2f' % area)
例子3:輸入年份判斷是不是閏年票编。
提示:閏年是有規(guī)律可循的。
能被4整除但不能被100整除的年份為普通閏年卵渴,比如2004年是閏年慧域,1999就不是閏年。能被400整除的為世紀閏年浪读,比如2000是閏年昔榴,但1900年不是閏年
'''
輸入年份判斷是否為閏年
Version:1.0
Author:kk
'''
year = int(input('請輸入年份:'))
is_leap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(is_leap)
說明:比較運算符會產(chǎn)生布爾值,而邏輯運算符and和or會對這些布爾值進行組合碘橘,最終也是得到一個布爾值互订,閏年輸出True,平年輸出False痘拆。
小結(jié):運算符和表達式對于任何一門編程語言都是非常重要的仰禽。
5、分支結(jié)構(gòu)
1)if語句的使用
在Python中,要構(gòu)造分支結(jié)構(gòu)可以使用if供炎、elif和else關鍵字君躺。所謂關鍵字就是有特殊含義的單詞,像if和else就是專門用于構(gòu)造分支結(jié)構(gòu)的關鍵字折联,很顯然你不能夠使用它作為變量名。
例子:
'''
用戶身份判斷
Version:1.0
Author:kk
'''
username = input('請輸入用戶名:')
password = input('請輸入密碼:')
#
if username == 'admin' and password == '123456':
print("身份驗證成功识颊!")
else:
print("身份驗證失敵狭!")
提示:if和else 的最后面有一個:祥款,它是用英文輸入法輸入的冒號清笨;程序中輸入的'、"刃跛、=抠艾、(、)等特殊字符桨昙,都是在英文輸入法狀態(tài)下輸入的检号。有很多初學者經(jīng)常不注意這一點,結(jié)果運行代碼的時候就會遇到很多莫名其妙的錯誤提示蛙酪。強烈建議大家在寫代碼的時候都打開英文輸入法(注意是英文輸入法而不是中文輸入法的英文輸入模式)齐苛,這樣可以避免很多不必要的麻煩。
如果要構(gòu)造出更多的分支桂塞,可以使用if...elif...else...結(jié)構(gòu)或者嵌套的if...else...結(jié)構(gòu)凹蜂,下面的代碼演示了如何利用多分支結(jié)構(gòu)實現(xiàn)分段函數(shù)求值。
'''
分段函數(shù)求值
Version:1.0
Author:kk
'''
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f({x}) = {y}')
#還可以寫成
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
else:
if x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f({x}) = {y}')
2)例子
例子1:英制單位英寸與公制單位厘米互換。
'''
英制單位英寸與公制單位厘米互換玛痊。
Version:1.0
Author:kk
'''
value = float(input('請輸入長度:'))
unit = input('請輸入單位:')
if unit == 'in' or unit == '英寸':
print('%.2f英寸 = %.2f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':
print('%.2f厘米 = %.2f英寸' % (value, value / 2.54))
else:
print('請輸入有效單位')
例子2:百分制成績轉(zhuǎn)換為等級制成績汰瘫。
要求:如果輸入的成績在90分以上(含90分)輸出A;80分-90分(不含90分)輸出B擂煞;70分-80分(不含80分)輸出C混弥;60分-70分(不含70分)輸出D;60分以下輸出E颈娜。
'''
百分制成績轉(zhuǎn)換為等級制成績
Version:1.0
Author:kk
'''
score = float(input('請輸入成績:'))
if score >= 90:
grade = 'a'
elif score >= 80:
grade = 'b'
elif score >= 70:
grade = 'c'
elif score >= 60:
grade = 'd'
else:
grade = 'e'
print('您成績所在的等級是:',grade)
例子3:輸入三條邊長剑逃,如果能構(gòu)成三角形就計算周長和面積。
'''
1官辽、判斷是否為三角形蛹磺,a+b>c,a+c>b,b+c>a
2、周長:三邊相加
3同仆、面積:用海倫公式求三角形面積萤捆。海倫公式是如下。其中 s 是三角形的半周長俗批, a俗或、b和c是三角形三條邊的長度。s*(s-a)(s-b)(s-c) ** 0.5
Version:1.0
Author:kk
'''
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
#判斷是否可以組成三角形
if a + b > c and a + c > b and b + c > a:
#計算周長
peri = a + b + c
print(f'周長:{peri}')
#計算半周長
half = peri / 2
#計算面積
area = half * (half - a) * (half - b) * (half - c) ** 0.5
print(f'面積:{area}')
else:
print('不能構(gòu)成三角形')
6岁忘、循環(huán)結(jié)構(gòu)
1)for-in循環(huán)
如果明確的知道循環(huán)執(zhí)行的次數(shù)辛慰,我們推薦使用for-in循環(huán),例如計算1到100的和干像。
'''
用for循環(huán)實現(xiàn)1~100求和
Version:1.0
Author:kk
'''
total = 0
for x in range(1,101):
total += x #也可以寫成total = x + total
print(total)
range(101):可以用來產(chǎn)生0到100范圍的整數(shù)帅腌,需要注意的是取不到101。
range(1, 101):可以用來產(chǎn)生1到100范圍的整數(shù)麻汰,相當于前面是閉區(qū)間后面是開區(qū)間速客。
range(1, 101, 2):可以用來產(chǎn)生1到100的奇數(shù),其中2是步長五鲫,即每次數(shù)值遞增的值溺职。
range(100, 0, -2):可以用來產(chǎn)生100到1的偶數(shù),其中-2是步長位喂,即每次數(shù)字遞減的值浪耘。
實現(xiàn)1~100之間的偶數(shù)求和
'''
用for循環(huán)實現(xiàn)1~100偶數(shù)求和
Version:1.0
Author:kk
'''
total = 0
for x in range(2,101,2):
total += x
print(total)
2)while循環(huán)
如果要構(gòu)造不知道具體循環(huán)次數(shù)的循環(huán)結(jié)構(gòu),我們推薦使用while循環(huán)塑崖。while循環(huán)通過一個能夠產(chǎn)生或轉(zhuǎn)換出bool值的表達式來控制循環(huán)七冲,表達式的值為True則繼續(xù)循環(huán);表達式的值為False則結(jié)束循環(huán)弃舒。
猜數(shù)字游戲的規(guī)則是:計算機出一個1到100之間的隨機數(shù),玩家輸入自己猜的數(shù)字,計算機給出對應的提示信息(大一點聋呢、小一點或猜對了)苗踪,如果玩家猜中了數(shù)字,計算機提示用戶一共猜了多少次削锰,游戲結(jié)束通铲,否則游戲繼續(xù)。
'''
猜字游戲
Version:1.0
Author:kk
'''
import random
#產(chǎn)生1個1~100的隨機數(shù)
answer = random.randint(1,100)
counter = 0
while True:
counter += 1
number = int(input("請輸入0~100數(shù)字:"))
if number > answer:
print("猜大了器贩!")
elif number < answer:
print("猜小了颅夺!")
else:
print("您猜對了!")
break
print(f'您共猜了{counter}次蛹稍!')
break和continue
上面的代碼中使用while True構(gòu)造了一個條件恒成立的循環(huán)吧黄,也就意味著如果不做特殊處理,循環(huán)是不會結(jié)束的唆姐,這也就是常說的“死循環(huán)”拗慨。為了在用戶猜中數(shù)字時能夠退出循環(huán)結(jié)構(gòu),我們使用了break關鍵字奉芦,它的作用是提前結(jié)束循環(huán)赵抢。需要注意的是,break只能終止它所在的那個循環(huán)声功,這一點在使用嵌套循環(huán)結(jié)構(gòu)時需要引起注意烦却,下面的例子我們會講到什么是嵌套的循環(huán)結(jié)構(gòu)。除了break之外先巴,還有另一個關鍵字是continue其爵,它可以用來放棄本次循環(huán)后續(xù)的代碼直接讓循環(huán)進入下一輪。
3)嵌套的循環(huán)結(jié)構(gòu)
'''
九九乘法表
Version:1.0
Author:kk
'''
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i * j}',end = '\t')
print()
例子1:輸入一個正整數(shù)判斷它是不是素數(shù)筹裕。
提示:素數(shù)指的是只能被1和自身整除的大于1的整數(shù)醋闭。
'''
輸入一個正整數(shù)判斷是否為素數(shù)
Version:1.0
Author:kk
'''
num = int(input('請輸入一個正整數(shù):'))
end = int(num ** 0.5)
is_prime = True
for x in range(2,end + 1):
if num % x ==0:
is_prime = False
break
if is_prime and num != 1:
print(f'{num}是素數(shù)')
else:
print(f'{num}不是素數(shù)')
例子2:輸入兩個正整數(shù),計算它們的最大公約數(shù)和最小公倍數(shù)朝卒。
提示:兩個數(shù)的最大公約數(shù)是兩個數(shù)的公共因子中最大的那個數(shù)证逻;兩個數(shù)的最小公倍數(shù)則是能夠同時被兩個數(shù)整除的最小的那個數(shù)。
'''
輸入兩個正整數(shù)計算它們的最大公約數(shù)和最小公倍數(shù)
Version:1.0
Author:kk
'''
x = int(input('x = '))
y = int(input('y = '))
if x > y:
x, y = y, x
for factor in range(x, 0 , -1):
if x % factor == 0 and y % factor ==0:
print(f'{x}和{y}的最大公約數(shù)為{factor}')
print(f'{x}和{y}的最小公倍數(shù)為{x * y // factor}')
break
小結(jié):如果知道循環(huán)的次數(shù)抗斤,我們通常使用for循環(huán)囚企;如果循環(huán)次數(shù)不能確定,可以用while循環(huán)瑞眼。在循環(huán)中還可以使用break來提前結(jié)束循環(huán)