Python入门学习笔记引号的运用①单引号和双引号都可用于输出。如print(Hello)和Print(Hello)是一样的效果②转义字符 \当print中有\转义字符时会将后面紧接着的那个字符(这个字符可以是 ‘ 或 “ )一起打印。如print(Hello \ World)的输出结果是Hello World③三引号的使用当print中有三引号时会根据文本的格式自动换行输入print(111 2222 3333)会输出111 2222 3333命名规则下划线命名法单词用英文连接用下划线_如user_namemath库的使用math.xxx()如计算求根公式import math a 1 b 2 c 1 delta b**2 - 4*a*c x (-b math.sqrt(delta)) / (a*2) #开平方跟函数 y (-b - math.sqrt(delta)) / (a*2) print(x,y)警告⚠️千万不要这么写x (-b math.sqrt(delta)) / a*2这样写会将括号里面的值算出来之后先除以a再乘2结果将不会是求根公式的结果注释的操作注释 (三引号)#注释 井号键变量类型#布尔类型 b1 True b2 False #字符串 s Hello World! #整数类型 a 1 print(type(b1)) print(type(s)) print(type(a)) print(type(1.5))输入input()是Python的输入函数# BMI 体重 / (身高 ** 2) user_weight input(请输入你的体重单位kg) user_hight input(请输入你的身高单位m) user_weight float(user_weight) user_hight float(user_hight) bmi user_weight / (user_hight ** 2) print(你的BMI是 str(bmi))警告⚠️input的输入得到的全部都是字符串类型如user_weight是字符串类型运算需要转换为数值类型输出print也只能输出字符串类型如果是数值需要用str函数转换后输出条件语句lover_index input(请输入对象的心情指数0-100) lover_index_int int(lover_index) if lover_index_int 60: print(去玩游戏吧) else: print(为了自个的小命还是不能玩了)警告⚠️if和else后面的执行语句都需要缩进这是Python的固定代码格式逻辑运算and是并的意思相当于C语言的or是或的意思相当于C语言的||not是非的意思相当于C语言的!容器-列表list列表的标识就是中括号[]shopping_list [] shopping_list.append(键盘) shopping_list.append(鼠标) print(shopping_list) shopping_list[1] 电脑 print(shopping_list) shopping_list.remove(键盘) print(shopping_list)警告⚠️列表中可以放任意类型的变量通过append在尾部添加也可以通过remove移除列表中的变量容器-字典dict字典的标识就是花括号{}dict {小明:123, 小红:456} dict[小绿] 789 query input(请输入要查询的信息) if query in dict: print(你查询的含义如下) print(dict[query]) else: print(未查询到信息)警告⚠️字典中是一一对应的关系键值的存储类型循环while循环print(这是一个求平均值的程序\n) result 0.0 i 0 user_input input(请输入数字完成数字输入后输入q终止程序:\n) while user_input ! q: result float(user_input) i 1 user_input input(请输入数字完成数字输入后输入q终止程序:\n) print(平均值结果为 str(result/i))for循环total 0 for i in range(1,101): total total float(i) print(total)format使用student_list {小明: 123,小红: 456,小绿: 789} for name,flag in student_list.items(): print({0}你好,你的标志是:{1}.format(name,flag)) print(f{name}你好,你的标志是{flag})库的使用pypi.org可以搜寻官方库PyPI · The Python Package Index面向对象编程①类类的命名首字母大写多个字母连接每个单词的首字母大写如CuteCat。类的简单使用class Student(): def __init__(self,name,id): self.name name self.id id self.score {语文:0,数学:0,英语:0} def setscore(self,course,score): if course in self.score.keys(): self.score[course] score else: print(不存在此科目) def printscore(self): print(f{self.name}的成绩是:{self.score}\n) stu Student(小明,123) stu.printscore() stu.setscore(语文,100) stu.printscore()②封装不需要知道类中的方法具体怎么操作只需直接调用方法③继承子类可继承父类的方法减少方法函数的重复class Employee: def __init__(self,name,id): self.name name self.id id def print_info(self): print(f员工姓名{self.name},员工工号{self.id}) class FullTimeEmployee(Employee): def __init__(self,name,id,monthly_salary): super().__init__(name,id) #继承父类调用父类的变量赋值 self.monthly_salary monthly_salary def calculate_monthly_pay(self): return self.monthly_salary class PartTimeEmployee(Employee): def __init__(self, name, id, daily_salary): super().__init__(name, id) self.daily_salary daily_salary def calculate_monthly_pay(self): return self.daily_salary*22 employee_first FullTimeEmployee(小明,123,8000) employee_first.print_info() print(f{employee_first.name}的月薪是{employee_first.calculate_monthly_pay()}) employee_sec PartTimeEmployee(小红,456,200) employee_sec.print_info() print(f{employee_sec.name}的月薪是{employee_sec.calculate_monthly_pay()})④多态子类中继承的父类的方法不同子类继承的方法实现的效果和具体操作不一样文件操作读文件read返回全部文件内容的字符串readline返回一行文件内容的字符串readlines返回全部文件内容组成的列表f open(./data.txt,r,encodingutf-8) # content f.read() # print(content) # content_line f.readline() # print(content_line) content_lines f.readlines() print(content_lines) for line in content_lines: print(line) f.close()open函数中的文件操作模式w只写模式清空所有文件内容之后写r只读模式a附加模式在原有文件内容上附加内容r既可以读也可以写with open(./poem.txt,w,encodingutf-8) as f: f.write(Hello\n) f.write(World\n) with open(./poem.txt,a,encodingutf-8) as f: f.write(你最帅了\n) with open(./poem.txt,r,encodingutf-8) as f: content f.read() print(content) f.write(拜拜\n)测试单元测试库中的类unittest.TestCase以下是一个单元测试的例子原本的实行代码class ShoppingList: def __init__(self,shopping_list): self.shopping_list shopping_list def get_item_count(self): return len(self.shopping_list) def get_total_price(self): total_price 0 for price in self.shopping_list.values(): total_price price return total_price单元测试代码from shopping_list import ShoppingList import unittest class ShoppingListTest(unittest.TestCase): def setUp(self): self.shopping_list ShoppingList({帽子:5,鞋子:50,手套:10}) def test_get_item_count(self): self.assertEqual(self.shopping_list.get_item_count(),3) def test_get_total_price(self): self.assertEqual(self.shopping_list.get_total_price(),55)执行单元测试代码的方式在终端输入python -m unittest警告⚠️代码文件的命名千万不要有数字不然会测试不了如单元测试的文件命名为1_test.py(.venv) PS D:\Project\Python_入门\1 python -m unittest .F FAIL: test_get_total_price (test_shoplist.ShoppingListTest.test_get_total_price) ---------------------------------------------------------------------- Traceback (most recent call last): File D:\Project\Python_入门\1\test_shoplist.py, line 10, in test_get_total_price self.assertEqual(self.shopping_list.get_total_price(),55) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError: 65 ! 55 ---------------------------------------------------------------------- Ran 2 tests in 0.001s FAILED (failures1)以下是运行结果有一个测试不通过以下写明了原因65!55.F的意思是第一个测试成功第二个测试失败匿名函数lambda num1,num2:num1num2#定义的方式 result (lambda num1,num2:num1num2)(2,3)#调用方式 print(result)函数作为参数第一个函数中的第二个参数calculator是函数本体相当于C中的函数指针意思是把函数传递过去def calculate_and_print(num,calculator): result calculator(num) print(f |输入| {num} |输出| {result}) def calculator_square(num): result num*num return result def calculator_plus_10(num): result num 10 return result a_res calculate_and_print(1,calculator_plus_10) b_res calculate_and_print(2,calculator_square)