python基礎課程1(看程式碼看註釋)--基本操作和資料型別

Spongelady發表於2018-08-20
python環境自行安裝,建議安裝3版本的環境。編輯器可以使用pycharm或者sublime,也可以線上上使用jupyter

import this #函式存在於模組中,我們需要先引用這個模組才能使用這個模組裡的函式
print('hello,world')#單引號
print("hello,world")#雙引號
print('hello,\'world')#合理使用單引號避免轉義字元的使用,減少程式碼的醜陋程度(在單引號裡使用單引號,在雙引號裡使用雙引號)
#1.將python當成是計算器使用,從計算器開始
5 + 100
1 / 100 # 除數
10.0
100 * 10
100 - 99
100 % 3 # %取餘數
100 ** 3 #10的3次方
10 **(1/3)#10開3次方
#完成更復雜的數學運算時要用到數學模組math
import math
math.pi
math.sin(math.pi/2)#sin(90du)pi=180度
math.floor(9.2343)#向下取整,小數點後邊都不要了,就是9
math.ceil(9.3645)#向上取整,就是10
round(100/3,3)#round保留有效位數字函式,這裡表示保留3位有效數字
#練習:女神取買水果,蘋果是5元/斤,葡萄15元/斤。女神買了2斤蘋果,1.5斤葡萄。請問女神買蘋果和葡萄分別花了多少錢,一共花費了多少錢?
#蘋果的花費
print(5*2)
#葡萄的花費
print(15*1.5)
#總共花費
print(5*2+15*1.5)
#1.存在的問題,脫離了題幹我們無法知道數字含義;2.重複計算;3.表達不清晰(使用拼接的函式format())
#5是單價,15也是單價,我們把5賦值給apple_price表示,用grape_pricr表示15葡萄的單價
apple_price = 5
apple_weight = 2
apple_cost = apple_price * apple_weight

grape_price = 15
grape_weight = 1.5
grape_cost = grape_price * grape_weight

total_cost = apple_cost +grape_cost

print(apple_cost,grape_cost,total_cost)

#format函式增強的格式化字串函式format,對輸出進行優化,例如輸出解釋性函式:蘋果的花費為:{};葡萄的花費為:{};總共花費為:{};
print("蘋果的花費為:{};葡萄的花費為:{};總花費為:{}".format(apple_cost,grape_cost,total_cost))#format裡邊的值依次替換了大括號裡的值。format函式只認花括號

#變數:代表某個值的名稱,如上邊題目的apple_price,若變數沒有賦值就拿來使用的話會報錯,在使用變數時必須要先賦值才能被使用
#語法糖
a = 10
b = 20
a,b = b,a
print("a is{};b is {}".format(a,b))#完成了兩個值的替換
#變數的命名規範:1.識別符號的第一個字母必須是字母表中的字母(大寫或者小寫)或者一個下劃線;2.識別符號的其他部分可以由字母(大寫或小寫)或者數字或者下劃線都可以
abc_127_jskdh = 10
_djgk_18_ = 12
i = 10
__name = 50
name_836 = 50
#不符合的變數命名 73syfu = 560 #字母開頭  my name = 50 #空格也是非法字元
#程式碼規範建議:1.不要使用單字元取名字,很難理解該單字元含義;2.變數名能夠清晰地表達變數的意思;3.合理使用字母中間的下劃線

##python的變數型別:字串型別,數值,列表型別list,元組型別tuple,字典型別dict
#變數型別--數值型別
number = 10
number = number +10
number+=10#增值運算
number -=10
number *= 10
number /=10
import math
#乘方,開方
math.pow(3,10)#3**10
3**10
math.floor(10.38947)
math.ceil(10.387)
#度的轉換radians()
math.radians(180)#輸出了pi
math.sin(math.pi/2)
math.cos(math.pi)
min(10,8346,264,209)#取最大值
max(10.364,374)#取最小值
10 % 3#取模
divmod(10/3,3)#輸出(3,1)分別代表的是商和餘數
#bool型,真命題假命題,一個True,一個False假唄,主要用在需要條件判斷的情況下唄,嚴格區分大小寫
True==1,False==0
#bool型別變數,and運算,or運算,非not運算
print(True and True) #與運算,都為真時才為真
print(True or False)#只要有一個為真時才為真
print(not True)#取反操作
True + 10#不建議這樣,這樣相加沒有意義,不過在元組時有一個特例,在接下來會講到
##字串,在後邊講到類時會講到,在大量除錯時使用,著重講解
#字串可以用單引號或者雙引號,通過單雙引號的靈活使用可以避免不必要的字元轉義,即\
line = 'hello world'
line = "hello world\""
line = 'hello world\''

line1 = "ni hao"
line2 = "yuping"
print(line1 + line2)#字串的加法操作
print(line1 * 3)#字串的乘法操作,會輸出三個字串:"ni hao ni hao ni hao"
#字串是不可變型別,相當於儲存地址是不可以改變的。變數名相當於只是一個指標,可以用python裡的id(line2)函式查詢
line2 = "shukai"
#返回字串長度
len(line2)
#返回一個身份的識別符,可以理解為返回一個變數的儲存地址
id(line2)

##答疑:主要是對前文的一些回顧,尤其是程式碼規範上
#字串切片功能
line = 'huan ying da jia lai kan wo bo ke'
#取前十個字元
line[:10]#切片,取前十個字元,預設序列是從0開始的,字串是屬於一個序列,從0-10依次類推
line[2:20:2]#從第三個字元開始,取到前20個字元,每隔2個字元取一次
line[:-10]#取後十個字元
line[::-1]#取反轉字元
line[1]#取單子字元

line.title()#line+.可以看到可操作函式
line.capitalize? #快速檢視函式如何使用,在函式後邊加問號,返回字串功能;capitalize功能是對首字元進行大寫
line.center(20,'%')#至少接收一個引數,居中作用
line.count('A')#line字串裡的計數函式,就是查詢該字串出現的個數
##字串首尾判斷
line.endswith('aaaa')#是否以我們給定的字串結尾
line.startswith('hdhdh')#是否以我們給定的字串開始
line.find('S',3)#尋找line字串中是否存在S字元,返回字元的下標,不存在返回-1;3表示跳過第3個字元開始查詢
line.index('S')#返回字元的下標,不存在時直接報錯,這是和find函式的區別
line.upper()#把所有字母變成大寫
line.isupper()#判斷是不是全部是大寫
line.lower()#把所有字母變小寫
line.islower()#判斷是不是全部是小寫
line.istitle()#判斷是不是標題格式??
line = '   djhsdj  \n\t'##字串中存在換行和製表符等
line.strip()##去除兩端的空格或者製表符
line.rstrip()#去除左端的空格或者製表符
line.lstrip()#去除右端的空格或者製表符
#同時對字串的大小寫進行轉換
line.swapcase()##對大寫轉換成小寫,對小寫轉換成大寫
#函式操作之後不是更改了字串,單獨的字元是不可以進行賦值操作的,上邊用到的所有字串函式都是為我們生成了一個新的字串,原有的字串是不變的,只是儲存的指標改變了

##列表:可以容納任意型別的物件,任意數量的物件;重點是列表是可變型別的
variable = []#生成了一個空列表
variable = list() #和上述效果一樣,生成了空列表
variable = [1,2,3,4,5,6,'python',[],[100,200]]
variable = []
variable.append(1)
variable.append(2)
variable.append('hgds')#表示列表是可變的,列表長度是可變的,字串是不可以改變的
variable[0] = 10#在列表的指標為0的位置上的值替換為10,再一次驗證是可變的
#python是一種動態型別的語言,一個變數時什麼型別,要看程式在執行過程中代表的變數型別是什麼
var = 10
type(var)#type函式表示變數的型別
##字串和列表型別是可以相通的,例如切片操作等
variable[:10]
variable+variable
#學習到字串時對字串的操作在列表裡也可以使用,這裡可以用的那也會用,我們統稱之為序列
##列表是一種容器型的序列,可以容納多種型別;字串是扁平型的序列,變數值決定了這個變數的型別
#append()函式沒有返回值,而是修改了我們列表的物件
variable.append(1)#增加了1
#清空
variable.clear()
#copy函式
new_variable = variable.copy()##輸出上是沒有區別的,當我更該了new_variable的值時,會發現variable的值也被改變了,說明了兩個列表的賦值影響是一回事
id(new_variable),id(variable)##發現地址是指向同一個地址,改變指標的元素時地址不變只是改變了內部的一個值,因此一變則全變
[1,2]+[2,3]
a=[1,2]
b=[3,4]
a.extend(b)#在a中插入b,更改了a的長度
a.insert(0,100)##新增元素操作,append()函式是在末尾新增元素,insert()函式是指定位置進行新增;在第0個位置新增元素100
a.pop(0)##將第0個位置的值彈掉,沒有給傳遞引數就彈掉最後一個
a.remove(0)##移除元素操作,要移除的元素不存在就報錯
a.sort(reversed=True)##排序函式;reverse=True反轉函式

##元組:不可變的列表,元組也是一個序列,但是是不可變的;除此之外不具備上述的廣泛操作,基本不可變,只有count()和index()兩個工具
var = tuple()
var = ()
type(var)
var = (1,2,3,[1,2,3])
var.count(1)##找1出現的次數
var.index(2)#找索引為2的元素

##字典型別(同學們自己區分字串和列表以及元組和字典的區別)一個字對應一個頁碼,叫做對映,在python裡叫做字典
#空字典
var = {}
var = dict()
type(var)
words = {
    '中':100,
    '國':200
}
var{'中'}
location = {100,200}
location(words.index('中'))
#拉鎖函式,將一個列表拉成2個列表
new_var = list(zip(words,location))#輸出['中','國'][100,200]
dict(new_var)##列表轉化為字典使用dict()函式
list(zip([1,2],[3,4,5],[4,5,5]))
##生成一個字典
students = {'li' 'wang','sun','huang','zhao'}
money = dict.fromkeys(students,10)#每個同學給定了一個元素物件初始值
##如何訪問字典中的值
money('kid')##訪問不存在的值報錯
a = money.get('ww','100')#找不到返回空,如果給賦值了找不到可以給你返回賦予的值
money.keys()#返回鍵
money.items()#返回值
money.pop('wang')#刪除操作
money['wang'] = 100#可以賦值,不存在的值時不可以訪問的
money.setdefault('haha',1000)#賦值

相關文章