第一阶段
注释
# print("Hello world!!!")
单行注释(# + 空格)
多行注释 ’‘’多行‘’‘
常见的转换语句
int(x)
float(x)
str(x)
运算符
+
-
*
/
//
%
** 指数
Ctrl + D 复制当前行
Ctrl + Shift + F10 运行
字符串格式化
name = "黑马程序员"
age = 19800
message = "学IT就来%s, 学费%s" % (name, age)
print(message)
数字精度控制
num1 = 11.345
print("数字11.345宽度限制7,小数精度2, 结果: %7.2" % num1)
快速格式化
name = "tl"
year = 1996
month = 8
print(f"我是{name}, 出生于{year}年{month}月")
input语句
name = input("请告诉我你是谁?")
print("Get!!! 你是:%s" % name)
比较运算符
==
!=
>
<
>=
<=
if 判断语句
if age >= 18:
print("我已经成年了")
elif age == 18:
print("我刚好成年了")
else:
print("未成年")
if 嵌套
获取1~10随机数
import random
num = random.randint(1 ,10)
while循环语句
i = 0
while i < 100:
print("zj, I love you")
i++
for 循环语句
name = "itheima"
for x in name:
print(x)
range语句
range(num) # 不含num本身
range(num1, num2) # 含num1本身,不含num2本身
range(num1, num2, step) # step步长
continue
break
函数的定义
"""
功能:两数之和
:param x:参数x的说明
:param y:参数y的说明
:return: 返回值的说明
"""
def 函数名(传入参数):
函数体
return 返回值
None 无意义,空
数据容器
列表(list)
变量名称 = [元素1, 元素2, 元素3, 元素4]
my_list = [[1, 2, 3], [4, 5, 6]]
# 获取元素索引
mylist = ["itcast", "python", "123"]
index = mylist.index("123")
print("Get!!! 你是:%s" % index)
# 插入
mylist.insert(1, "best")
# 追加单个
mylist.append('456')
# 追加一批
mylist2 = [1, 2, 3]
mylist.extend(mylist2)
# 删除
del mylist[0]
element = mylist.pop(0)
# 删除某元素在列表中的第一个匹配项
mylist.remove(2)
# 清空列表
mylist.clear()
# 统计某元素在列表中内的数量
mylist.count(2)
# 统计列表中全部的元素数量
count = len(mylist)
# 列表的遍历-while循环
def list_while_func():
my_list = ['创智教育', '黑马程序员', 'python']
index = 0
while index < len(my_list):
element = my_list[index]
print(f"第{index}个元素{element}", end='\n')
index += 1
# 列表的遍历-for循环
def list_for_func():
my_list = [1, 2, 3, 4, 5]
for element in my_list:
print(f"列表元素有:{element}")
元组(tuple)
# 定义元组,唯一不同在于不可修改
变量名称 = (元素, 元素, 元素, 元素, 元素)
# 定义1个元素的元组
t = ('hello', ) # 注意,必须要带有逗号
字符串(str)
# 只读不可修改,只能重新定义新的字符串
# 通过下标索引取值
my_str = "itheima and itcast"
value = my_str[2]
print(f"从字符串{my_str}取下标为2的元素,值是:{value}")
# index 方法
index = my_str.index("and")
print(index)
# replace 方法
new_my_str = my_str.replace("it", "程序")
print(f"将字符串{my_str}, 进行替换后得到{new_my_str}")
# split 方法
my_list = my_str.split(" ")
print(f"{type(my_list)}")
# strip 方法
print(my_str.strip("ti")) # heima and itcas
# 统计字符串某字符串的出现次数
count = my_str.count("it")
# 统计字符串的长度
num = len(my_str)
切片操作
mylist = [0, 1, 2, 3, 4, 5, 6]
result = mylist[1 : 4] # 步长默认是1, 所以可以省略不写
my_tuple = (1, 2, 3, 4, 5, 6)
result = my_tuple[:]
my_str = "01234567"
result = my_str[:]
my_str1 = "01234567"
result = my_str[::-1] # 等同于将序列反转了
集合(set)
# 不支持元素重复 {}
变量名称 = {元素, 元素}
my_set = {"123", "111", "222", "234", "111"}
# 添加新元素
my_set.add("hello")
# 移除元素
my_set.remove("234")
# 随机取出一个元素
element = my_set.pop()
# 清空集合 clear
# 取出2个集合的差集
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.differenece(set2) # {2, 3}
# 消除2个集合的差集
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.differenece_update(set2) # set1 = {2, 3}, set2 = {1, 5, 6}
# 2个集合合并
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2) # {1, 2, 3, 5, 6}
# 统计集合元素数量len()
num = len(set1) # 去重之后的结果
# 集合的遍历
# 集合不支持下标索引,不能用while 循环
# 可以用for循环
for element in set1:
print(element)
字典(dict)
my_dict = {key:value, key:value , ……}
my_dict = {'林俊杰': 77, '王力宏':88} # key 不可重复
# 新增元素
my_dict['张昕泽'] = 66
# 更新元素
my_dict['林俊杰'] = 80
# 删除元素
element = my_dict.pop('林俊杰')
# 清空元素
my_dict.clear()
# 获取全部的key
keys = my_dict.keys()
# 遍历字典
for key in my_dict:
print(f"{my_dict[key]}")
# 统计字典内的元素数量
num = len(my_dict)
# max 最大元素
# min 最小元素
# 容器转换 list(容器), str(容器), tuple(容器), set(容器)
# sorted(my_list, reverse = True) # True 表示降序排序
# 函数多个返回值
def test_return():
return 1, 2, 3
x, y, z = test_return()
# 传参
def user_info(name, age, gender)
# 关键字传参
user_info(name = '小明', gender = "男", age = 20)
user_info('小明', gender = "男", age = 20)
# 位置传递(元组)
def user_info(*args):
print(args)
# 关键字传递(字典)
def user_info(**kwargs):
print(kwargs)
# 函数作为参数传递
def test_func(compute):
result = compute(1, 2)
print(result)
def compute(x, y):
return x + y
# lambda匿名函数
# lambda 传入参数:函数体(一行代码)
def test_func(compute):
result = compute(1, 2)
print(result)
test_func(lambda x, y : x + y)
# 文件操作
# 文件编码的概念 utf-8
# open() 打开函数
open(name, mode, encoding)
mode : r, w, a
f = open("python.txt", "r", encoding = "UTF-8")
read(num) # num 不传入读取全部行
readline() # 读取一行
readlines() # 读取全部行,封装到列表中
f.close() # 解除文件的占用
time.sleep(10) # 延时操作
with open 语法操作,自动close,避免忘掉
eg:
with open("python.txt", "r") as f:
count = 0
for line in f:
line = line.strip()
worlds = line.split(" ")
for world in worlds:
if world == "123":
count += 1
print(count)
# 文件写入
f.write('hello world')
# 内容刷新(从内存写入文件中)
f.flush()
# 了解异常
try:
print("捕获")
except Exception as e:
print("有异常")
else:
print("没有异常")
finally:
print("有没有异常我都要执行")
# 模块 就是一个python文件,里面有类,函数,变量
import 模块名
from 模块名 import 类、变量、方法
from 模块名 import *
import 模块名 as 别名
from 模块名 import 功能名 as 别名
import time
time.sleep(10)
from time import sleep
sleep(5)
from time import * # * 表示全部的意思
# 运行时,__name__ 会被复制为 __main__,其他调用为FALSE 不会执行
if __name__ == '__main__':
# 只导入这个变量中的元素 __all__,只作用于*,可以手动导
__all__ = ['test_A']
# python包 就是一个文件夹
import my_package.my_module1
my_package.my_module1.info_print1()
from my_package import myodule1
myodule1.info_print1()
# 第三方包
科学计算中:numpy
数据分析中:pandas
大数据计算中:pyspark, apache-flink
图形可视化:matplotlib, pyecharts
人工智能:tensorflow
pip install 包名称(国外)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
# 导入自定义包,模块
from my_utils import str_util
str = str_util.str_reverse("123456")
print(str)
# json
import json
# json转字符串
data = [{"name": "长大山", "age": 11}, {"name": "王大锤", "age": 12}, {"name": "赵啸虎", "age": 13}]
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
print(f"{json_str}")
# 字符串转json
str = json.loads(json_str)
print(str)
print(f"{str}")
# eg 折线图
from pyecharts.charts import Line
# 创建一个折线图对象
line = Line()
# 给折线图对象添加x轴的数据
line.add_xaxis(["中国", "美国", "英国"])
# 给折线图对象添加y轴的数据
line.add_yaxis("GDP", [30, 20, 10])
line.set_global_opts(
title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%")
)
# 通过render方法,将代码生成为图像
line.render()
第二阶段
# 类
class Student:
name = None
age = None
tel = None
def __init__(self, name, age, tel):
self.name = name
self.age = age
self.tel = tel
print("构造函数")
def add(self, x, y):
return x + y
def print_info(self):
print(f"姓名:{self.name}, 年龄:{self.age}, 电话:{self.tel}")
student = Student("周杰伦", "31", "11111111111")
sum = student.add(1, 2)
print(sum)
student.print_info()
# 封装
就是在类成员变量或者类成员方法前面加上 "__"
# 继承
class 类名(父类名):
类内容体
# 空类
# 同名成员变量,左边优先级更高
class MyPhone(Phone, NFCReader, RemoteControl):
pass
# 调用父类同名成员
方法一:
父类名.成员变量
父类名.成员方法(self)
方法二:
super().成员变量
super().成员方法()
# 为变量设置类型注解
var_1: int = 10
stu: Student = Student() # type:Student
# 为函数(方法)的类型注解--返回值注解
def 函数方法名(形参: 类型, ....., 形参: 类型) -> 返回类型:
pass
# Union 类型
from typing import Union
my_list: list[Union[str, int]] = [1 ,3, "itheima"]
# 多态
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("汪汪汪")
class Cat(Animal):
def speak(self):
print("喵喵喵")
def make_noise(animal: Animal):
animal.speak()
dog = Dog()
make_noise(dog)
# 数据库操作
from pymysql import Connection
# 获取到mysql数据库的链接对象
conn = Connection(
host="localhost",
port=3306,
user="root",
password="admin@"
autocommit=True # 设置自动提交
)
print(conn.get_server_info())
# 获取游标对象
cursor = conn.cursor()
# 先选择数据库
conn.select_db("mopc_web")
# 执行sql语句
# cursor.execute("create table test_pymysql(id INT, info varchar(255))")
# cursor.execute("insert into student values(10001, '周杰伦')")
# 通过commit确认
conn.commit()
cursor.execute("select * from test_pymysql")
result: tuple = cursor.fetchall()
for line in result:
print(line)
conn.close()