if 條件語(yǔ)句
寫(xiě)一個(gè)簡(jiǎn)單的領(lǐng)書(shū)案例
# 去領(lǐng)書(shū)腮郊,咱們35個(gè)人
# 第一步 記住一個(gè)變量济赎,叫 目標(biāo)數(shù)量 35
target_count = 35
# 第二步 獲取第二個(gè)變量塘娶,實(shí)際數(shù)量 是多少 纹坐?枝冀?
real_count = 34
# 第三步 比較 實(shí)際數(shù)量 == 目標(biāo)數(shù)量
# 如果等于: 帶書(shū)回家
if target_count == real_count:
print("數(shù)目正確,回家了")
# 否則 報(bào)個(gè)錯(cuò)
else:
print("不對(duì)")
Debug
- 打斷點(diǎn),在某行代碼的左邊宾茂,鼠標(biāo)左鍵點(diǎn)一下
- 如何使用斷點(diǎn)瓷马? 使用 debug 模式啟動(dòng)代碼就行
斷點(diǎn)斷下來(lái)以后拴还,可以單步運(yùn)行 step over跨晴,可以看到程序如何執(zhí)行if語(yǔ)句,循環(huán)語(yǔ)句
可以使用 step into 進(jìn)入正在被調(diào)用的函數(shù)內(nèi)部查看
幾種集合類型
列表 list
[]
number_list = [1, 2, 3, 4, 5]
# 0 1 2 3 4
# -5 -4 -3 -2 -1
print(number_list)
# 第幾個(gè)叫下標(biāo),英文叫index片林,一般縮寫(xiě)i端盆。 這個(gè)在計(jì)算機(jī)里,一般從0開(kāi)始數(shù)
print(number_list[0])
print(number_list[1])
print(number_list[2])
print(number_list[3])
print(number_list[4])
# 倒著拿 -1 -2 -3
print(number_list[-1])
print(number_list[-2])
# 切片费封,python特有的語(yǔ)法 起始的下標(biāo)焕妙,和結(jié)束的下標(biāo),左閉右開(kāi)弓摘,[0:3] 左邊這個(gè)第0個(gè)焚鹊,是包含的,右邊這個(gè)3是不包含的意思就是取到2
print(number_list[0:3])
- 字典韧献,dict末患,全稱是 dictionary
#
# key: value 鍵 值 對(duì) 鍵和值 是一對(duì)兒
#
# 假如我們就用 {} 表示一個(gè)學(xué)生,這是一個(gè)字典
bsx = {
"name": "班邵雄",
"chinese": 88,
"math:": 77,
"english": 66
}
name_value = bsx["name"]
print(name_value)
循環(huán)
while 循環(huán)
- 特點(diǎn)是锤窑,先判斷條件璧针,再進(jìn)循環(huán)體
number = 1
while number < 10:
# 循環(huán)體
print("正在循環(huán),當(dāng)前數(shù)字{}".format(number))
number = number + 1
print('循環(huán)結(jié)束了')
等效于
# 像 while 一樣的渊啰,根據(jù)數(shù)字來(lái)循環(huán)的 -> range() range單詞是范圍的意思探橱,從1開(kāi)始,每次+1绘证,加到10
for i in range(10):
print(i)
for 循環(huán) (重點(diǎn))
- 最靈活隧膏,可定制化程度最高的循環(huán)
- for 變量 in 一個(gè)可迭代(循環(huán))的東西
number_list = [1, 2, 3, 4, 5]
# 基礎(chǔ) for 循環(huán)
for number in number_list:
print(number)
# 像 while 一樣的,根據(jù)數(shù)字來(lái)循環(huán)的 -> range() range單詞是范圍的意思嚷那,從1開(kāi)始胞枕,每次+1,加到10
for i in range(10):
print(i)
# 便利集合车酣,比如 list 元組曲稼,下標(biāo), index,還有一種需求是湖员,在循環(huán)遍歷的同時(shí)贫悄,需要把index給獲取到
for index, number in enumerate(number_list):
print(f"index: {index}, number: {number}")
函數(shù)
函數(shù),一般也可叫 方法(method)娘摔,英文是 function窄坦,function翻譯過(guò)來(lái)是函數(shù),或者功能。
- y = f(x)
- 封裝一段代碼鸭津,一般是重復(fù)的代碼彤侍,或者是,經(jīng)常修改的代碼逆趋,或者是需要操作的數(shù)據(jù)一直在變動(dòng)
- python中函數(shù)的定義是
def 函數(shù)名:
# 找出2個(gè)數(shù)中盏阶,較大的那個(gè)
# 原始形態(tài):用 if else 去寫(xiě)
# 定義函數(shù) define 定義 define function, 其中 my_max 函數(shù)名闻书,
# ()叫參數(shù)列表名斟,就是說(shuō)你可以從外部,把你需要的數(shù)據(jù)魄眉,傳遞進(jìn)函數(shù)體
# 這個(gè)傳遞砰盐,就是通過(guò)參數(shù)
def my_max(number1, number2):
if number1 > number2:
max_value = number1
else:
max_value = number2
return max_value
result = my_max(1, 2)
print(result)
result = my_max(3, 4)
print(result)
綜合小案例
- 假設(shè)有一個(gè)班級(jí),里面有若干個(gè)學(xué)生
- 每個(gè)學(xué)生有 姓名坑律,語(yǔ)數(shù)外三門的成績(jī)
- 根據(jù)語(yǔ)數(shù)外成績(jī)排序
- 加難度岩梳,計(jì)算每個(gè)學(xué)生的平均分,然后根據(jù)平均分排序
第一步 弄一個(gè)數(shù)據(jù)類型來(lái)表示一個(gè)班的學(xué)生
- 怎么表示一個(gè)學(xué)生晃择,用一個(gè) 字典
{}
冀值,字典里有幾個(gè) key,是 名字和語(yǔ)數(shù)外成績(jī) - 怎么表示一堆學(xué)生藕各,把一個(gè)一個(gè)的字典
{}
弄到一個(gè)list里面[]
得到的結(jié)果是[{}]
第二步 排序
- 根據(jù) 語(yǔ)數(shù)外成績(jī)排序
# 綜合小案例
# 假設(shè)有一個(gè)班級(jí)池摧,里面有若干個(gè)學(xué)生
# 每個(gè)學(xué)生有 姓名,語(yǔ)數(shù)外三門的成績(jī)
# 根據(jù)語(yǔ)數(shù)外成績(jī)排序
# 加難度激况,計(jì)算每個(gè)學(xué)生的平均分作彤,然后根據(jù)平均分排序
# 第一步 把這個(gè)一個(gè)班的學(xué)生,表示出來(lái)
## 1.1 先弄一個(gè)學(xué)生乌逐, 用一個(gè)字典 {}, ctrl + d 復(fù)制當(dāng)前行
student1 = {'name': '劉琪', 'math': 88, 'chinese': 98, "english": 33}
student2 = {'name': '蘇亞楠', 'math': 66, 'chinese': 48, "english": 63}
student3 = {'name': '宋敏', 'math': 97, 'chinese': 68, "english": 73}
## 1.2 弄一堆學(xué)生
student_list = [student1, student2, student3]
# 具體使用的排序規(guī)則竭讳,下面這個(gè)函數(shù)表示,使用數(shù)學(xué)成績(jī)排序
def sort_by_math(my_student_list):
return my_student_list['math']
# 具體使用的排序規(guī)則浙踢,下面這個(gè)函數(shù)表示绢慢,使用語(yǔ)文成績(jī)排序
def sort_by_chinese(my_student_list):
return my_student_list['chinese']
# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示洛波,使用英語(yǔ)成績(jī)排序
def sort_by_english(my_student_list):
return my_student_list['english']
# 排序胰舆,有一個(gè)python自帶的函數(shù),sorted蹬挤,直接調(diào)用就行
# 用法 sorted(你要排序的東西是啥缚窿,key=我按那個(gè)屬性排序,reverse=排序是否倒轉(zhuǎn))
sorted_student_list = sorted(student_list, key=sort_by_english, reverse=True)
for student in sorted_student_list:
print(student)
第三步 計(jì)算平均分
- 平均分 = 各個(gè)課程的分?jǐn)?shù)和 / 課程數(shù)目
- 平均分 排序
# 綜合小案例
# 假設(shè)有一個(gè)班級(jí)焰扳,里面有若干個(gè)學(xué)生
# 每個(gè)學(xué)生有 姓名倦零,語(yǔ)數(shù)外三門的成績(jī)
# 根據(jù)語(yǔ)數(shù)外成績(jī)排序
# 加難度误续,計(jì)算每個(gè)學(xué)生的平均分,然后根據(jù)平均分排序
# 第一步 把這個(gè)一個(gè)班的學(xué)生扫茅,表示出來(lái)
## 1.1 先弄一個(gè)學(xué)生蹋嵌, 用一個(gè)字典 {}, ctrl + d 復(fù)制當(dāng)前行
student1 = {'name': '劉琪', 'math': 88, 'chinese': 98, "english": 33}
student2 = {'name': '蘇亞楠', 'math': 66, 'chinese': 48, "english": 63}
student3 = {'name': '宋敏', 'math': 97, 'chinese': 68, "english": 73}
## 1.2 弄一堆學(xué)生
student_list = [student1, student2, student3]
# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示葫隙,使用數(shù)學(xué)成績(jī)排序
def sort_by_math(my_student_list):
return my_student_list['math']
# 具體使用的排序規(guī)則栽烂,下面這個(gè)函數(shù)表示,使用語(yǔ)文成績(jī)排序
def sort_by_chinese(my_student_list):
return my_student_list['chinese']
# 具體使用的排序規(guī)則停蕉,下面這個(gè)函數(shù)表示愕鼓,使用英語(yǔ)成績(jī)排序
def sort_by_english(my_student_list):
return my_student_list['english']
# 具體使用的排序規(guī)則钙态,下面這個(gè)函數(shù)表示慧起,使用英語(yǔ)成績(jī)排序
def sort_by_avg(my_student_list):
return my_student_list['avg']
# 3:計(jì)算平均分,按平均分排序
# 3.1 一個(gè)學(xué)生的平均分怎么算册倒,這個(gè)學(xué)生 math+chinese+english蚓挤, 除以 3
# student1_sum_score = student1['math'] + student1['chinese'] + student1['english']
# student1_avg = student1_sum_score / 3
# 3.2 所有學(xué)生的平均分,list驻子, 循環(huán)
for student in student_list:
student_sum_score = student['math'] + student['chinese'] + student['english']
student_avg = student_sum_score / 3
# 把當(dāng)前循環(huán)的這個(gè)學(xué)生的平均分灿意,給它存儲(chǔ)起來(lái),怎么存崇呵,就存到當(dāng)前這個(gè)學(xué)生的字典里面
student['avg'] = student_avg
# 3.3 按照平均分 avg 去排序
sorted_by_avg_student_list = sorted(student_list, key=sort_by_avg, reverse=True)
for student in sorted_by_avg_student_list:
print(student)