马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python语法(基于C语言基础和简单Python基础)
参考学习资料:【你以为自己这辈子都学不会编程?超超超基础Python课程,3小时快速入门 【自学Python教程合集】【3小时快速入门Python】】 https://www.bilibili.com/video/BV1944y1x7SW/?share_source=copy_web&vd_source=3aa9ee0c4fcf2e52762a44f906c09534
命名规则
变量一般如下命名:
- han_xiang
- computer_science
类名一般如下命名:(驼峰命名法)
数学运算
加减乘除
两个除号(//)表示除完后向下取整。
乘方:**
e.g. 2的三次方: 2 ∗ ∗ 3 2**3 2∗∗3
其他复杂运算的数学公式:
e.g.
- import math
- print(math.log2(8))
复制代码 可以通过查阅文档来探求math库中提供的数学公式:
链接:https://docs.python.org/zh-cn/3/library/math.html
数据范例
- 字符串 str
- 整数 int
- 浮点数 float
- 布尔范例 bool
- 空值范例 NoneType
- 列表
- 字典
- ……
- type("Hello") # <class 'str'>
- type(6) # <class 'int'>
- type(None) # <class 'NoneType'>
复制代码 留意布尔范例的True和False首字母要大写。
输入语句
条件语句
- if [条件]:
- [动作]
- elif [条件]:
- [动作]
- else:
- [动作]
复制代码 条件语句可以嵌套。
逻辑运算
e.g.
- not ( x > 5 and (x < 10 or x == 12))
复制代码 列表
e.g.
- shopping_list = ["键盘", "键帽"]
- shopping_list.append("显示器") # 此时原先的列表已经改变
- print(len(shopping_list)) # 打印列表里元素的数量
- shopping_list.remove("显示器") # 该元素必须之前存在于列表中
- shopping_list[1] = "音响" # 索引为1的元素被修改
复制代码 Python的列表可以放差别范例的数据:
- list1 = ["Hello"]
- list1.append(66.6)
- list1.append(True)
- list1.append(None)
- print(list1)
复制代码 此外,Python尚有很多可以针对列表的内置函数:
- num_list = [1, 13, -7, 2, 96]
- print(max(num_list))
- print(min(num_list))
- print(sorted(num_list))
复制代码 字典&元组
→哈希表
e.g. 电话簿可以用人名查到手机号
- contacts = {"小明": "13700000000",
- "小花": "13700000001"}
- print(contacts["小明"])
复制代码 元组:(列表用方括号,元组用圆括号)
- example_tuple = ("键盘", "键帽")
复制代码 元组不可变,不能添加或删除元素。
字典与元组的联合使用:
- contacts = {("张伟", 23): "15000000000",
- ("张伟", 34): "15000000001",
- ("张伟", 56): "15000000002"}
- zhangwei23_phone = contacts[("张伟", 23)]
复制代码 字典和列表一样,是可变的。
如果想知道某个键是否已经存在,“键 in 字典”会返回一个布尔值,告知该键是否已经存在于字典里。
- del contacts["小明"] # 删除这个键值对
复制代码 for循环
迭代的对象可以是列表、字典、字符串等。
- temperature_list = [36.4, 36.3, 37.2, 37.0]
- for temp in temperature_list:
- # 对每个变量做一些事情
- # ……
复制代码 对于字典,可以采用如下操作:
- temperature_dict = {"111": 36.4, "112": 36.3, "113": 37.2, "114": 37.0}
- for staff_id, temperature in temperature_dict.items():
- if temperature >= 38:
- print(staff_id)
复制代码 for循环联合range:
range的起始值在序列中,而结束值不在序列中。
- for i in range(5, 10):
- print(i)
复制代码 上述代码运行后,i会依次被赋值为5到9的数字并打印。
range()还可以包含第三个参数,表示步长,也就是每次跨几个数字。
格式化字符串
f-字符串:
- gpa_dict = {"小明": 3.251, "小花": 3.869, "小李": 2.683, "小张": 3.685}
- for name, gpa in gpa_dict.items():
- print(f"{name}你好,你的当前绩点为:{gpa:.2f}")
复制代码 函数
e.g. 计算扇形面积
- def calculate_sector(central_angle, radius):
- sector_area = central_angle / 360 * 3.14 * radius ** 2
- print(f"此扇形的面积为:{sector_area}")
-
- calculate_sector(160, 30)
复制代码 函数也可以带return。
面向对象编程
e.g. 创建House类
- class House:
- def __init__(self, 颜色, 位置, 卧室数):
- self.颜色 = 颜色
- self.位置 = 位置
- self.卧室数 = 卧室数
-
- house1 = House("紫色", "长沙", 4)
- house2 = House("红色", "深圳", 3)
复制代码 还可以在类中定义方法函数:
- class Student:
- def __init__(self, name, student_id):
- self.name = name
- self.student_id = student_id
- self.grades = {"语文": 0, "数学": 0, "英语": 0}
-
- def set_grade(self, course, grade): # 第一个“self”不能省略
- if course in self.grades:
- self.grades[course] = grade
-
- def print_grades(self):
- print(f"学生{self.name} (学号:{self.student_id}) 的成绩为:")
- for course in self.grades:
- print(f"{course}: {self.grades[course]}分")
复制代码 类的继承:
e.g. 人类和小猫都属于哺乳动物
- class Mammal:
- def __init__(self, name, sex):
- self.name = name
- self.sex = sex
- self.num_eyes = 2
-
- def breathe(self):
- print(self.name + "在呼吸...")
-
- def poop(self):
- print(self.name + "在拉屎...")
-
- class Human(Mammal): # 继承的父类要写在括号里
- def read(self):
- print(self.name + "在阅读...")
-
- class Cat(Mammal):
- def scratch_sofa(self):
- print(self.name + "在抓沙发...")
复制代码 如果同时为Human和Cat添加has_tail属性,二者的取值结果并不相同。
解决:使用super()
- class Mammal:
- def __init__(self, name, sex):
- self.name = name
- self.sex = sex
- self.num_eyes = 2
-
- def breathe(self):
- print(self.name + "在呼吸...")
-
- def poop(self):
- print(self.name + "在拉屎...")
-
- class Human(Mammal):
- def __init__(self, name, sex):
- super().__init__(name, sex) # 这样会调用父类的构造函数
- self.has_tail = False
-
- def read(self):
- print(self.name + "在阅读...")
-
- class Cat(Mammal):
- def __init__(self, name, sex):
- super().__init__(name, sex)
- self.has_tail = True
-
- def scratch_sofa(self):
- print(self.name + "在抓沙发...")
复制代码 文件操作
相对路径&绝对路径
input()
非常处理
- try:
- user_weight = float(input("请输入您的体重(单位:kg):"))
- user_weight = float(input("请输入您的身高(单位:m):"))
- user_BMI = user_weight / user_height ** 2
- except ValueError: # 值错误
- print("输入非合法数字,请重新运行程序,并输入正确的数字。")
- except ZeroDivisionError: # 分母为零错误
- print("身高不能为零,请重新运行程序,并输入正确的数字。")
- except: # 其他错误
- print("发生了未知错误,请重新运行程序。")
- else: # 当try语句没有产生任何错误时执行的语句
- print("您的BMI值为:" + str(user_BMI))
- finally: # 无论错误发生与否,最终都会被执行的语句
- print("程序结束运行。")
复制代码 代码测试
assert
- assert 1 + 2 > 6 # AssertionError
复制代码 Python单元测试库:unittest
e.g.
- # my_calculator.py
- # 实现代码
- def my_adder(x, y):
- return x + y
复制代码- # test_my_calculator.py
- # 测试代码
- import unittest
- from my_calculator import my_adder
- class TestMyAdder(unittest.TestCase):
- def test_positive_with_positive(self): # 函数名必须以“test_”开头
- self.assertEqual(my_adder(5, 3), 8)
-
- def test_negative_with_positive(self):
- ...
复制代码 写好测试用例后,在编辑器(e.g. PyCharm)的终端输入:
测试通过打印“·”,测试不通过打印“F”。
unittest.TestCase类的常见测试方法:
- assertEqual(A, B)
- assertTrue(A)
- assertIn(A, B)
- assertNotEqual(A, B)
- assertFalse(A)
- assertNotIn(A, B)
高阶函数
一个函数的“函数名”作为参数传给另外一个函数,或一个函数的返回值为另外一个函数。
e.g.
- def calculate_and_print(num, calculator):
- result = calculator(num)
- print(f"""
- | 数字参数 | {num} |
- | 计算结果 | {result} |""")
-
- def calculate_square(num):
- return num * num
- def calculate_cube(num):
- return num * num * num
- def calculate_plus_10(num):
- return num + 10
- calculate_and_print(3, calculate_square) # 注意第二个参数传入的是函数名而非函数,不带括号
复制代码 匿名函数
- lambda num1, num2: num1 + num2 # 只能有一个语句/表达式
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |