先导篇 | 为什么做这个教程,UP主是闲得发慌吗_哔哩哔哩_bilibili
Python3 模块 | 菜鸟教程
#引入模块中所有函数
import math
print(math.pi)
print(math.sin(math.pi*2))
#引入模块中特定函数
from math import sin, pi
print(pi)
print(sin(pi*2))
#在windows中按住ctrl键点击函数名可查看函数定义
a = "hello" #字符串用单引号或双引号包围
print(a[0]) #用索引指定字符串某位字符,即h
print("hello"[0]) #用索引指定字符串某位字符,即h
print(len(a)) #用len函数求字符串长度,即5
b = 6
c = 6.6
d1 = True
d2 = False
e = None
mix_list = ["hello", 66.6, True] #列表可以存放不同类型的数据
num_list = [1, 13, -7, 2] #列表可用方法改变
num_list.append(96) #用append方法向列表中加入元素,列表变为[1,13,-7,2,96]
num_list.remove(-7) #用remove方法删除列表中某元素,列表变为[1,13,2,96]
num_list[0] = -3 #用索引指定某元素,并给它重新赋值,列表变为[-3,13,2,96]
print(len(num_list)) #用len函数返回列表中元素数量,即4
print(max(num_list)) #用max函数返回列表中的最大值,即96
print(min(num_list)) #用min函数返回列表中的最小值,即-3
print(sorted(num_list)) #用sorted函数返回从小到大排序好的列表,即[-3,2,13.96]
name_tuple = ("Simon",1) #元组是不可变数据类型,不能添加、删除元素
#键与值用':'隔开,键值对用','隔开
#键是不可变数据类型,列表不能作为键
contact_dict = {"Simon":"000","Lily":"001"} #字典可变
contact_dict["Anna"] = "002" #添加键值对/给某键重新赋值
del contact_dict["Simon"] #删除键值对
print(contact_dict.keys()) #返回所有键,即dict_keys(['Lily', 'Anna'])
print(contact_dict.values()) #返回所有值,即dict_values(['001', '002'])
print(contact_dict.items()) #返回所有键值对,即dict_items([('Lily', '001'), ('Anna', '002')])
print("Simon" in contact_dict) #返回某个键是否在字典中,即False
print(contact_dict["Lily"]) #返回某个键的值,即001
print(len(contact_dict)) #用len函数返回列表中元素数量,即2
k = input("please input your age:") #输入变量的默认类型是字符串
use_age = int(k) #将变量k的类型转换为int
print("打印'let\'s go'")#\
print("hello\nLiMing") #\n
print('''Hello
LiMing''')
name = '老林'
year = '龙'
print(f'祝{name}:{year}年大吉!') #print(f'字符串{变量}字符串')
gpa = {'小李': 3.257, '小肖': 2.643}
for name, gpa in gpa.items():
print(f'{name}你好,你的当前绩点为{gpa:.2f}') #用“:.nf”来指定浮点数的小数位数
#多条件判断
weight = float(input("请输入您的体重(单位:Kg):"))
height = float(input("请输入您的身高(单位:m):"))
BMI = weight / (height**2)
if BMI <= 18.5:
print("偏瘦")
elif BMI <= 25:
print("正常")
else:
print("偏胖")
#逻辑运算:and, or, not
if (housework_count > 10 and shopping_count > 4 and not has_been_angry)
print("you will receive gift")
else:
print("you will get nothing")
#字典名.items()在for循环时,变量会被依次赋值为键与值组成的各元组
#元组的第一个元素会赋值给staff_id,元组的第二个元素会赋值给temp
temp_dict = {"001":36.4,"002":38.2,"003":36.6}
for staff_id,temp in temp_dict.items():
if temp>= 38:
print(staff_id)
#range(起始值,结束值)在for循环时,变量会被依次赋值为从 起始值 到 结束值-1 的数字
#range(结束值)在for循环时,变量会被依次赋值为从 0 到 结束值-1 的数字
for i in range(5, 10): #i会被依次赋值为从5到9的数字
print(i) #5 6 7 8 9
char_list = ["你", "好", "吗", "兄", "弟"]
#第一种方法:for循环
for char in char_list:
print char
#第二种方法:for循环+range
for i in range(len(char_list)):
print(char_list[i])
#第三种方法:while循环
i = 0
while i < len(char_list):
print(char_list[i])
i = i + 1
#while循环更适合于循环次数未知的情况
#例:求用户输入数字的平均值
user_input = input("请输入任意数量的数字,最后输入q表示所有数字输入完成:")
total = 0
count = 0
average = 0
while user_input != 'q':
total += float(user_input)
count += 1
user_input = input("请输入任意数量的数字,最后输入q表示所有数字输入完成:")
if count != 0:
average = total / count
print("您输入的数字平均值为:" + str(average))
# 例:一个计算BMI的函数
def calculate_BMI(weight, height): #用def定义函数
BMI = weight / (height ** 2)
if BMI <= 18.5:
category = '偏瘦'
elif BMI <= 25:
category = '偏瘦'
else:
category = '偏瘦'
print('您的BMI分类为'+category)
return BMI
weight = float(input("请输入您的体重(单位:Kg):"))
height = float(input("请输入您的身高(单位:m):"))
result = calculate_BMI(weight, height)
print(result)
class CutCat:
def __init__(self, cat_name, cat_age): #构造函数是特殊的方法,用来定义实例对象的属性
self.name = cat_name #self参数用于表示对象自身,用来把属性的值绑定在实例对象上
self.age = cat_age
def think(self, content): #方法中的self参数用于调用或修改对象的属性
print(f'小猫{self.name}在思考{content}')
cat1 = CuteCat('Jojo', 2) #调用类创建对象,构造函数会自动运行,self参数不需要手动传入
print(cat1.name) #获取对象的属性
cat1.think('今晚吃什么') #对对象调用方法
class Student:
def __init__(self, name, student_id):
self.name = name
self.student_id = student_id
self.score = {'Chinese':0, 'Math':0, 'English':0}
def set_score(self, course, score):
if course in self.score:
self.score[course] = score
def print_score(self):
print(f'学生{self.name}(学号:{self.student_id})的成绩为:')
for course in self.score:
print(f'{course}:{self.score[course]}分')
zeng = Student('小曾','002')
zeng.set_score('Chinese', 88)
zeng.set_score('Math', 95)
zeng.set_score('English',92)
zeng.print_score()
class Employee:
def __init__(self, name, employee_id):
self.name = name
self.employee_id = employee_id
def print_info(self):
print(f'员工名:{self.name},工号:{self.employee_id}')
class FullTimeEmployee(Employee): #在类名后加括号,括号中写入要继承的父类名
def __init__(self, name, employee_id, monthly_salary):
super().__init__(name, employee_id) #用super()来继承父类的特定属性
self.monthly_salary = monthly_salary
def calculate_monthly_pay(self):
print(f'{self.name}(工号:{self.employee_id})本月月薪为{self.monthly_salary}元')
class PartTimeEmployee(Employee):
def __init__(self, name, employee_id, daily_salary, work_day):
super().__init__(name, employee_id)
self.daily_salary = daily_salary
self.work_day = work_day
def calculate_monthly_pay(self):
salary = self.daily_salary * self.work_day
print(f'{self.name}(工号:{self.employee_id})本月月薪为{salary}元')
zhang = FullTimeEmployee('张三', '1001', 6000)
li = PartTimeEmployee('李四', '2001',200, 15)
zhang.print_info()
li.print_info()
zhang.calculate_monthly_pay()
li.calculate_monthly_pay()
1)绝对路径:从根目录出发,以目标文件/目标目录为结尾
2)相对路径:从参照文件位置出发,用”.”表示参照文件当前所在目录,用“…”表示上一层的父目录
#方法一
f1 = open('.\\data.txt', 'r', encoding='utf-8') #路径用\\隔开,'r'表示读,'utf-8'表示编码方式
content1 = f1.read() #用read()读整个文件
content2 = f1.readline() #用readline()读文件的一行内容
content3 = f1.readlines() #用readlines()返回一个列表,列表中各元素是文件各行的内容
f1.close() #使用完文件需要用close()关闭文件
#方法二
with open('.\\data.txt', 'r', encoding='utf-8') as f1
content1 = f1.read() #用read()读整个文件
content2 = f1.readline() #用readline()读文件的一行内容
content3 = f1.readlines() #用readlines()返回一个列表,列表中各元素是文件各行的内容
#'r':读,'w':清空再写,'a':追加内容,'r+':同时读写
with open('.\\poem.txt', 'w', encoding='utf-8') as f1:
f1.write('我欲乘风归去\n又恐琼楼玉宇\n高处不胜寒\n')
with open('.\\poem.txt', 'a', encoding='utf-8') as f1:
f1.write('起舞弄清影\n何似在人间\n')
f1.seek(0)
将文件指针移动到文件开头try:#可能产生错误的代码
weight = float(input('请输入您的体重(单位:kg):'))
height = float(input('请输入您的身高(单位:cm):'))
bmi = weight / (height ** 2)
except:#try代码块产生错误时运行
print('发生了错误')
else:#try代码块未产生错误时运行
print(f'您的BMI为:{bmi}')
finally:#无论是否错误都会运行
print('程序结束运行')
#实现代码(my_calculator.py)
def my_adder(x, y):
return x + y
#测试代码(test_my_calculator.py)
import unittest #unittest是python自带的一个用于测试的库
from my_calculator import my_adder #从实现代码文件中引入要测试的函数
class TestMyAdder(unittest.TestCase): #以unittest.TestCase为父类,继承各种测试功能
def test_positive_with_positive(self): #每个测试用例都是类中的方法,名字必须以test_开头
self.assertEqual(my_adder(5,3), 8) #assertEqual方法
def test_positive_with_negtive(self):
self.assertEqual(my_adder(5,-3), 2)
在终端输入python -m unittest
以运行unittest
库,就会完成测试并展示测试结果
self.assertEqual(A, B) #A是否在B中
self.assertTrue(A) #A是否为真
self.assertIn(A, B) #A是否在B中