打印
print("Hello World!") # 输出字符串
print("""
输
出
多
行
字
符
串
""") # 输出多行字符串
- 输出
字符串
必须以英文符号双引号包裹 - 输出多行字符使用
"""
包裹字符串 比如"""" 多行的字符串 """
变量
one = 1 # 变量赋值 也可以是 整数 浮点数 布尔值
print(one)
one = 2 # 变量重新赋值
print(one)
tow = one # 变量赋值变量
print(tow)
命名规则
- 变量名不能用除了
_
符号之外的符号分隔字符串比如a!b
或者空格比如a b
不能以数字
开头比如2a
- 变量名最好用表达含义
英文单词
命名 不要用拼音和中文
如果变量名是多个单词组成就用_
符号分隔比如user_name
保持可读性 - 变量名区分大小写
数学运算
print(1 + 1) # 加
print(1 - 1) # 减
print(1 * 2) # 乘
print(1 / 2) # 除
print("hello" + "world") # 如果是字符串相加 就是字符串拼接
import math
print(math.sqrt(2)) # 计算平方根
import
导入库 相当于使用别人写好代码进行使用
注释
# 这是注释
- 不会被解释器解释 用来表示代码作用
数据类型
print(1) # 输出整数
print(1.1) # 输出浮点数
print(True) # 布尔值
print("hello\nworld") # 输出换行转义字符
print(None) # 输出空值
- 输出
整数 浮点数 布尔值
不需要以英文符号双引号包裹 \
是转义字符 比如换行是\n
查看数据类型
使用 type
函数
print(type(None))
类型转换
print(int(1.1)) # 浮点数转整数
print(int("1")) # 字符串转整数 但是字符串必须都是数字
print(bool(0)) # 除了 0 是 False 其他都是 True
print(float(1)) # 整数转浮点数 但是参数必须都是数字
print(float("1")) # 整数转浮点数 但是字符串必须都是数字
print(str(None)) # 所有类型都可以转字符串
输入
print(input(" 输入内容:"))
判断, 缩进, 逻辑运算符
判断
result = input(" 输入内容:")
if result == "1":
# 等于就执行以下代码
print(" 等于 yes")
else:
# 不等于就执行以下代码
print(" 等于 no")
条件 | 含义 |
---|---|
!= | 不等于 |
>= | 大于或者等于 |
<= | 小于或者等于 |
等等
缩进
以缩进个数表示代码让那个判断执行
result = input(" 输入内容:")
if result == "1":
# 1 缩进 以下代码都属于 if result == "1": 条件成立的代码
# 等于就执行以下代码
print(" 等于 1")
result = input(" 输入内容:")
if result == "2":
# 2 缩进 以下代码都属于 if result == "2": 条件成立的代码
print(" 等于 2")
else:
# 1 缩进 以下代码都属于 if result == "1": 条件不成立的代码
# 不等于就执行以下代码
print(" 什么都不是 ")
逻辑运算符
与
result = input(" 输入第一个内容:")
result_2 = input(" 输入第二个内容:")
if result == "1" and result_2 == "2":
print(" 同时输入 1 和 2")
else:
print(" 没有同时输入 1 和 2")
- 必须满足所有条件
或
result = input(" 输入第一个内容:")
result_2 = input(" 输入第二个内容:")
if result == "1" or result_2 == "2":
print(" 输入 1 或 2")
else:
print(" 没有输入 1 或 2")
- 满足至少一个条件
非
result = input(" 输入内容:")
if not result == "1":
print(" 输入不等于 1")
else:
print(" 输入等于 1")
- 必须不满足所有条件
列表与字符串
my_list = [1, 2, 3, 4, 5] # 定义一个列表
my_list.append(4) # 向列表添加数据 会追加的在列表的尾部
my_list[0] = 2 # 通过下标修改列表中 对应下标的数据
my_list.remove(2) # 删除列表中对应数据 注意下标会发生改变 后面下标会前进一位或者下标会减少一位
print(my_list[0]) # 打印下标的值
print(len(my_list)) # 打印下标总数
print(my_list[0:3]) # 获取列表的一个范围内下标对应的值
- 列表值对应的下标位置默认从 0 开始
遍历
my_list = [1, 2, 3, 4, 5] # 定义一个列表
for i in my_list:
# 打印遍历的值
print(i)
字符串
my_string = "Hello World"
print(my_string[0]) # 获取字符串的下标对应的值
print(my_string[0:5]) # 获取字符串的一个范围内下标对应的值
- 无法改变值
元组
my_tuple = (1, 2, 3)
print(my_tuple)
- 无法改变值
遍历
my_tuple = (1, 2, 3)
for i in my_tuple:
# 打印遍历的值
print(i)
字典
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_dict["d"] = 4 # 向字典添加数据 键和值都会被添加到字典中
遍历
my_dict = {'a': 1, 'b': 2, 'c': 3}
# 遍历键和值
for key, value in my_dict.items():
print(key, value)
# 遍历键
for key in my_dict.keys():
print(key)
# 遍历值
for value in my_dict.values():
print(value)
range 函数
for i in range(1, 101, 2):
print(i)
- 参数一
开始数
参数二结束数
参数三跳过步数
while 循环
i = 0
while i < 100:
i = i+1
print(i)
while 条件
和while 执行代码
处于同一个代码块- 条件为
true
会继续循环 直到为false
为止
格式化字符串
my_string = "h{0}{1}{1}{0} w{0}r{1}d" # {数字} 数字表示 format 函数参数位数的值
print(my_string.format("o", "l"))
my_string = "h{o}{l}{l}{o} w{o}r{l}d" # {关键字} 表示 format 函数对应关键字的值
print(my_string.format(o="o", l="l"))
- 格式化是字符串按照固定格式进行输出和打印
- 使用花括号包裹数字或关键字 例如
{1}
或{name}
函数
# 定义函数
def function():
print(" 函数 ")
function()
function()
形参
# 定义函数
def function(s):
print(" 这是形参数{s}".format(s=s))
function(1)
function(2)
- 要让函数处理的值叫形参 传入的值叫实参 在函数中的圆括号定义 可以理解为变量传入的时候是赋值
返回值
# 定义函数
def function(s):
return s
print(function(1))
result = function(2) # 赋值变量
print(result)
- 函数处理完的结果用
return
返回 例如:return 1
- 没有返回值的函数赋值默认为
None
- 可以赋值到变量或者列表,字典,元组中存储
导入库
- 导入别人已经写好的函数进行使用
第一种写法
import os # 导入 os 库
os.system("echo hello world") # 调用库中的函数进行处理
- 导入 os 库中所有的函数 调用使用
os. 函数名
调用即可
第二种写法
from os import system # 导入 os 库
system("echo hello world") # 调用库中的函数进行处理
- 导入 os 库中指定函数 c
类的的定义和继承
class CXK:
def __init__(self, name, time):
# 属性类似一个的人信息
# 构造器是类似于一个使用技能的准备工作
self.name = name
self.time = time
# 定义方法 方法类似一个人会的技能
def sing(self):
print(" 唱 ")
def rap(self):
print("rap")
def basketball(self):
print(" 篮球 ")
def music(self):
print("music")
def end(self, end_str):
print(end_str)
# 实例化
cxk = CXK(" 蔡徐坤 ", " 两年半 ")
print(" 大家好 我叫{name} 是一名全民偶像练习生 练习时长{time} 喜欢 ".format(name=cxk.name, time=cxk.time))
cxk.sing()
cxk.rap()
cxk.basketball()
cxk.music()
cxk.end(" 鸡你太美 ")
self
代表自己
继承
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
# 子类没有重写 直接继承
def what_is(self):
print(" 都是动物 ")
def chinese_name(self):
print(" 是动物 ")
class People(Animal):
def __init__(self):
# super 初始化属性并应用到当前继承类
super().__init__("people", 18)
# 子类的自有方法
def walk(self):
print(" 两足走路 ")
# 子类存在父类相同的方法名 子类的方法会覆盖父类方法
def chinese_name(self):
print(" 是人类 ")
class Cat(Animal):
def __init__(self):
# super 初始化属性并应用到当前继承类
super().__init__("cat", 8)
# 子类的自有方法
def walk(self):
print(" 四足走路 ")
# 子类存在父类相同的方法名 子类的方法会覆盖父类方法
def chinese_name(self):
print(" 是猫猫 ")
people = People()
people.chinese_name()
people.walk()
cat = Cat()
cat.chinese_name()
cat.walk()
- 继承写法
类名(父类)
文件读写
模式
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
文件路径
绝对路径
C:\Users\Admin\PycharmProjects\test.py
相对路径
./test.py
符号 | 含义 |
---|---|
. | 当前目录 |
.. | 上一级目录 |
读取文件
file = open("./test.py","r", encoding="utf-8")
print(file.read())
file.readline() # 读取一行
file.readlines() # 读取为列表 自动转义相关字符
file.close() # 关闭打开的文件
自动关闭读取的文件
ith open("./test.py", "r", encoding="utf-8") as file:
print(file.read())
file.readline() # 读取一行
file.readlines() # 读取为列表 自动转义相关字符
写文件
file = open("./test.py","w", encoding="utf-8")
file.write("print('hello world')")
file.close() # 关闭打开的文件
自动关闭写的文件
with open("./test.py", "w", encoding="utf-8") as file:
file.write("print('hello world')")
- open 函数 第一个参数是读取的文件路径 第二个是读取模式 第三个是文件编码
异常处理
try:
result = int(input(" 输入整数:"))
print(result)
except ValueError:
print(" 不能输入其他类型的数据 ")
- except 加上异常名即可处理
测试代码
result = int(input("Enter a number: "))
assert result == 1
- 判断条件是否为
true
是false
就抛出异常
unittest
def my_adder(a, b):
return a + b
def my_subtract(a, b):
return a - b
import unittest
import test
# 必须继承 unittest Testcase 类
class StudentTest(unittest.TestCase):
# 类似于类的 __init__ 方法
def setUp(self):
self.result = test.my_adder(1,2)
# 方法名必须以 test_ 开头
def test_no1(self):
self.assertEqual(self.result, 3)
def test_no2(self):
self.assertEqual(self.result, 4)
在终端使用
python -m unittest main.py
回调函数
def main(call_function):
# 把形参当成函数直接调用
call_function("string")
# 形参对应函数传入的值
def call(s):
# 执行代码
print(s)
# 传入回调函数不要带括号 直接传入函数名称
main(call)
lambda
def main(call_function):
# 把形参当成函数直接调用
call_function("string")
main(lambda s: print(s))
- lambda 回调函数格式
lambda 形参: 执行代码
(lambda s: print(s))("hello world")
- lambda 形式函数传入参数
(lambda 形参: 执行代码)(实参)
正文完