python-課堂2

if 條件語句

寫一個(gè)簡單的領(lǐng)書案例

# 去領(lǐng)書,咱們35個(gè)人
# 第一步 記住一個(gè)變量,叫 目標(biāo)數(shù)量 35
target_count = 35
# 第二步 獲取第二個(gè)變量,實(shí)際數(shù)量 是多少 ??
real_count = 34
# 第三步 比較 實(shí)際數(shù)量 == 目標(biāo)數(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)斷下來以后,可以單步運(yùn)行 step over,可以看到程序如何執(zhí)行if語句,循環(huán)語句
可以使用 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,一般縮寫i。 這個(gè)在計(jì)算機(jī)里,一般從0開始數(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特有的語法 起始的下標(biāo),和結(jié)束的下標(biāo),左閉右開,[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ù)字來循環(huán)的 -> range() range單詞是范圍的意思,從1開始,每次+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ù)字來循環(huán)的 -> range() range單詞是范圍的意思,從1開始,每次+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翻譯過來是函數(shù),或者功能。

  • y = f(x)
  • 封裝一段代碼,一般是重復(fù)的代碼,或者是,經(jīng)常修改的代碼,或者是需要操作的數(shù)據(jù)一直在變動(dòng)
  • python中函數(shù)的定義是 def 函數(shù)名:
# 找出2個(gè)數(shù)中,較大的那個(gè)
# 原始形態(tài):用 if else 去寫

# 定義函數(shù) define 定義 define function, 其中 my_max 函數(shù)名,
# ()叫參數(shù)列表,就是說你可以從外部,把你需要的數(shù)據(jù),傳遞進(jìn)函數(shù)體
# 這個(gè)傳遞,就是通過參數(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é)生有 姓名,語數(shù)外三門的成績
  • 根據(jù)語數(shù)外成績排序
  • 加難度,計(jì)算每個(gè)學(xué)生的平均分,然后根據(jù)平均分排序

第一步 弄一個(gè)數(shù)據(jù)類型來表示一個(gè)班的學(xué)生

  • 怎么表示一個(gè)學(xué)生,用一個(gè) 字典 {},字典里有幾個(gè) key,是 名字和語數(shù)外成績
  • 怎么表示一堆學(xué)生,把一個(gè)一個(gè)的字典{}弄到一個(gè)list里面 [] 得到的結(jié)果是 [{}]

第二步 排序

  • 根據(jù) 語數(shù)外成績排序
# 綜合小案例
# 假設(shè)有一個(gè)班級(jí),里面有若干個(gè)學(xué)生
# 每個(gè)學(xué)生有 姓名,語數(shù)外三門的成績
# 根據(jù)語數(shù)外成績排序
# 加難度,計(jì)算每個(gè)學(xué)生的平均分,然后根據(jù)平均分排序

# 第一步 把這個(gè)一個(gè)班的學(xué)生,表示出來
## 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é)成績排序
def sort_by_math(my_student_list):
    return my_student_list['math']


# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示,使用語文成績排序
def sort_by_chinese(my_student_list):
    return my_student_list['chinese']


# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示,使用英語成績排序
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é)生有 姓名,語數(shù)外三門的成績
# 根據(jù)語數(shù)外成績排序
# 加難度,計(jì)算每個(gè)學(xué)生的平均分,然后根據(jù)平均分排序

# 第一步 把這個(gè)一個(gè)班的學(xué)生,表示出來
## 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é)成績排序
def sort_by_math(my_student_list):
    return my_student_list['math']


# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示,使用語文成績排序
def sort_by_chinese(my_student_list):
    return my_student_list['chinese']


# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示,使用英語成績排序
def sort_by_english(my_student_list):
    return my_student_list['english']


# 具體使用的排序規(guī)則,下面這個(gè)函數(shù)表示,使用英語成績排序
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ǔ)起來,怎么存,就存到當(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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容