序言
各编程语言都有各自复杂的语法和标准,但是从我自身微薄的见识来看,各语言间的编程思想大方向是通用的,唯一不同的是各功能的语法,复杂语法也是由基础语法构成。 举个栗子,无论是c、java、js和python等都有 注释、输出、输入、变量、判断、循环、函数、类和异常捕获 等,所以我认为只要熟悉一门语言后,再去了解其他语言的基础语法,就可以达到快速上手的目的。
博主经过一段时间了解学习后,认为以下的学习路径是比较适合自己的思维,所以特此分享给大家参考。
如果对某一模块的细节有疑惑,推荐 菜鸟教程 或 其他教程网站学习
Tip: ① 因为在写文章时为了摘出最重要的知识,而省略了大量的细节。 ② 实践是最好的老师,看的再多也不如自己敲一遍记的深刻
如果有哪些地方写错还望海涵,可以私信或评论指出,我及时更改,感谢🙏同时也欢迎更多人来指导交流~
1. 环境搭建
本案例中使用的Python版本号3.8.0,Pycharm版本号为2021.2
https://www.python.org/downloads 这是Python官网的下载地址,建议使用稳定版前2,3个版本
https://www.jetbrains.com/pycharm/download/#section=windows 这是Pycharm官网的下载地址,如果只是学习了解,可以仅下载免费的Community版
在此安装细节就不展示了,重要的是更改文件的安装路径,剩下的基本都是next
2. 注释
2.1 单行注释
2.2 多行注释
"""
我是多行注释
我是多行注释
"""
3. print() 输出
在python中每行语句不需要以分号结尾
print('Hello World')
string = 'Hello World'
print(f'{string}!')
print方法打印后会默认会换行,如果不需要可以添加end参数
print('Ka', end='')
print('zi')
4. input() 输入
string = input('请输入名字:')
print(f'我的名字是{string}')
print(type(string))
num1 = input('请输入金额:')
print(type(num1))
num2 = int(input('请输入金额:'))
print(type(num2))
5. 变量
Python 中的变量赋值不需要类型声明
命名规则:
推荐的变量命名规则:
变量 | 推荐写法 |
---|
变量名 or 函数名 or 模块名 | 全小写下划线(get_data) | 类名 | 大驼峰(Student) | 常量 | 全大写下划线(MAX_NUM) | 私有属性 | 以双下划线开始(__age) | 魔法变量 | 以双下划线开始,双下划线结尾(__ init __) |
6. 数据类型
标准类型 | 方法名 | 相关方法 | 举例 |
---|
整型 | int | | 1 | 浮点型 | float | | 1.0 | 字符 | str | find()、replace()、split() 、join()等 | ‘字符串’ | 布尔 | boolean | | True | 列表 | list | append()、remove()、reverse()、sort()等 | [1, 2, 3] | 元组 | tuple | | (1, 2, 3) | 字典 | dict | | {‘name’: ‘kazi’, ‘age’: 18} | 集合 | set | add()、remove()、pop() | {1, 2, 3} |
- 列表list可以增删改查操作,但是元组tuple只能查找
- 集合set类型会自动去重,且是无序的
- 使用type(变量名)可以查看该变量的数据类型
7. 运算符
7.1 算术运算符
运算符 | 含义 |
---|
+ | 加 | - | 减 | * | 乘 | / | 除 | // | 整除(向下取整,如9 // 4 输出 2) | % | 取余 | ** | 幂指数 (2**3,2的三次方) |
7.2 复合赋值运算符
运算符 | 等价于 |
---|
+= | 先进行加法运算再赋值(a += b 等价于 a = a + b) | -= | 同上,不再赘述 | *= | | /= | | //= | | %= | | **= | |
7.3 逻辑运算符
只有空值和None转换成布尔值是False,其他是True
print(None or 0 or 1)
8. if判断
冒号代表条件判断结束
在Python中没有大括号{},是通过缩进来表示程序的上下级关系
语法
if 条件判断:
print('条件成立执行的代码')
elif 条件判断:
print('条件成立执行的代码')
else:
print('条件成立执行的代码')
三目运算符
num1 = 5
num2 = 3
num = num1 if num1 > num2 else num2
print(num)
9. 循环
9.1 两大关键字
continue:跳过本次循环,继续下一次循环
break:终止距离最近的循环结构
9.2 while循环
语法
while 循环条件:
...循环体1
...循环体2
...
else:
print('在循环结构正常结束时会执行(没有执行break)')
9.3 for循环
语法
for 临时变量 in 序列:
...循环体1
...循环体2
...
else:
print('在循环结构正常结束时会执行(没有执行break)')
for i in range(0,3):
print(i)
"""
输出结果:
0
1
2
"""
list1 = [0, 1, 2]
for i in list1:
print(i)
"""
输出结果:
0
1
2
"""
列表推导式
list1 = [i for i in range(5)]
print(list1)
10. 函数
10.1 普通函数
语法
def 函数名称([参数1,参数2...]):
函数体
..
[return 返回值]
def sum(x, y):
return x + y
print(sum(1,2))
函数定义不能为空。如果某种原因写了无内容的函数定义,使用 pass 语句来避免错误
def student_info():
pass
含有不定长参数的函数
def user_info(*args):
print(f'我的名字是{args[0]}, 今年{args[1]岁}')
user_info('kazi', 18)
def book_info(**kwargs):
print(f"书籍名称是{kwargs['name']},价格为{kwargs['price']}元")
book_info(name='Python从入门到入土', price=33.3)
10.2 lambda表达式(匿名函数)
语法
变量名 = lambada 形参 : 返回值或表达式
fn1 = lambda : 100
fn2 = lambda num1, num2: num1 + num2
10.3 闭包和装饰器
需求:如果在函数执行完毕后,我们依然希望局部变量保存在内存中不会被清理。
解决:使内存中的局部变量保留
def outer(fn):
a = 10
def inner():
return a
return inner
func = outer()
print(func)
装饰器
本质上也是个闭包函数
def outer(fn):
def inner():
print('登录功能')
fn()
print('-' * 20)
return inner
@outer
def comment():
print('评论功能')
comment()
"""
输出结果:
登录功能
评论功能
------------------
"""
11. 异常捕获
语法
try:
可能出现异常的代码
except [Exception as e]:
出现异常,则执行的代码
else:
如果try语句中的代码没有出现异常,则执行else代码
finally:
无论程序是否出现异常,系统在异常处理后都会自动执行finally
12. 模块
12.1 导入方式
import 模块名
import 模块名 as 别名
模块名.函数名()
from 模块名 import *
from 模块名 import 函数名1,函数名2...
函数名1()
12.2 内置模块
常见的内置模块:time、random、os 等
import random
print('生成0-10的随机数:', random.randint(0,10))
12.3 自定义模块
模块名称不能是中文,不能以数字开头
自定义的模块名称不能和内置模块名相同,如time、random
def sum(x,y):
return x + y
from demo1 import sum
print(sum(1, 2))
13. 文件
语法
文件对象 = open(file_name, mode, [encoding])
name:打开的文件名 或 包含文件所在的具体路径
mode:设置打开文件的模式,默认为r,只读模式
以下模式仅针对文本类型的读写操作(常用)
模式 | 效果 |
---|
r | 只读 | w | 只写。打开文件并清空原内容,如果文件不存在则新建 | a | 追加。打开文件但不清空原内容,在原内容尾部追加内容,如果文件不存在则新建 |
添加b字符可以组成成针对二进制格式文件(图片、视频和音频等)的读写操作。如rb、wb、ab
encoding:编码格式。默认为gbk
13.1 读文件
三种方法:read(),readline(),readlines()
python.txt
Life is Short, i study Python!
kazi
18
文件对象.read([size])
f = open('python.txt', 'r')
content = f.read()
print(content)
f.close()
"""
输出结果:
Life is Short, i study Python!
Kazi
18
"""
文件对象.readline()
- 一次读取一行内容
- 每运行一次readline()函数,其就会将文件的指针向下移动一行。通常与while死循环配合使用
- 适合读取大文件
f = open('python.txt', 'r')
while True:
content = f.readline()
if not content:
break
else:
print(content)
f.close()
"""
输出结果:
Life is Short, i study Python!
Kazi
18
"""
文件对象.readlines()
- 一次性读取文件的所有内容
- 返回结果是一个列表,列表中的每一个元素都是文件中的一行。通常与for循环配合使用
- 适合读取小文件
f = open('python.txt', 'r')
print(f.readlines())
"""
输出结果:
['Life is Short, i study Python!\n', 'Kazi\n', '18']
"""
13.2 写文件
文件对象.write(待写入的内容)
f = open('python.txt', 'w', encoding='utf-8')
f.write('我是Kazi')
13.3 关闭文件
文件打开以后需要占用计算机资源,不关闭则会造成资源浪费
文件对象.close()
拓展内容: 当代码出现异常时,可能会导致文件没有执行close()语句,导致资源浪费,所以可以使用内置方法with解决
自动调用关闭文件操作,即使出现异常也会自动执行关闭文件操作
with open('python.txt', 'r') as f:
content = f.read()
print(content)
14. 类
语法
class 类名(object):
对象 = 类名()
举个栗子
class Person(object):
def __init__(self,name, age):
self.name = name
self.age = age
def introduce(self)
print(f'我是{self.name},今年{self.age}岁')
student = Person('Kazi',18)
student.introduce()
"""
输出结果:
我是Kazi,今年18岁
"""
15. 练手题目
需求分析:
创建一个学员信息管理系统
进入系统显示系统功能界面,功能如下:
1、添加学员信息
2、删除学员信息
3、修改学员信息
4、查询学员信息(只查询某个学员)
5、遍历所有学员信息
6、保存学员信息
7、退出系统
系统共7个功能,用户根据自己需求选取
参考代码
student.py
class Student(object):
def __init__(self, name, age, gender, mobile, description):
self.name = name
self.age = age
self.gender = gender
self.mobile = mobile
self.description = description
def __str__(self):
return f'===> 姓名:{self.name},年龄:{self.age},性别:{self.gender},电话:{self.mobile},简介:{self.description}'
student_cms.py
from student import Student
from os import path
from time import sleep
def is_continue(string):
flag = input(f"是否{string}(Y/N):")
if flag.lower() == 'y':
return True
else:
return False
class StudentCMS(object):
def __init__(self):
self.studentList = []
@staticmethod
def show_help():
print('*' * 40)
print('学员信息管理系统(面向对象版)')
print('-' * 20)
print('\t1.添加学员信息')
print('\t2.删除学员信息')
print('\t3.修改学员信息')
print('\t4.查询学员信息')
print('\t5.遍历所有学员信息')
print('\t6.保存学员信息')
print('\t0.退出系统')
print('*' * 40)
def add_student(self):
while True:
name = input('添加学生的姓名:')
for item in self.studentList:
if name == item.name:
print('已有相同名字,请重新输入')
break
else:
break
age = int(input('添加学生的年龄:'))
gender = input('添加学生的性别:')
mobile = input('添加学生的电话:')
description = input('简介:')
self.studentList.append(Student(name, age, gender, mobile, description))
print('添加成功,请注意保存数据')
def del_student(self):
name = input("需要删除哪位学生(姓名)?")
for item in self.studentList:
if item.name == name:
if is_continue('删除'):
self.studentList.remove(item)
print('删除成功,请注意保存数据')
break
else:
print('未删除学生,返回菜单')
return
else:
print('该学生姓名不存在')
return
def edit_student(self):
name = input("需要修改哪位学生(姓名)?")
for item in self.studentList:
if item.name == name:
item.name = input('请输入修改后的学员姓名:')
item.age = int(input('请输入修改后的学员年龄:'))
item.gender = input('请输入修改后的学员性别:')
item.mobile = input('请输入修改后的学员电话:')
item.description = input('请输入修改后的学员简介:')
print('修改成功')
break
else:
print('error:该学生姓名不存在')
return
def show_student(self):
name = input("查询哪位学生(姓名)信息?")
flag = True
for item in self.studentList:
if name in item.name:
print(item)
flag = False
if flag:
print('无学生信息')
def show_all(self):
if not self.studentList:
print('无学生数据,返回菜单')
else:
for item in self.studentList:
print(item)
def load_student(self):
if not path.exists('student.txt'):
with open('student.txt', 'w', encoding='utf-8') as file:
file.write('')
else:
with open('student.txt', 'r', encoding='utf-8') as file:
content = file.read()
if content:
data = eval(content)
self.studentList = [
Student(item['name'], item['age'], item['gender'], item['mobile'], item['description']) for item
in
data]
else:
return
def save_data_to_file(self):
with open('student.txt', 'w', encoding='utf-8') as file:
data = [item.__dict__ for item in self.studentList]
file.write(str(data))
print('数据已成功保存')
file.close
def start(self):
self.load_student()
print('正在玩命加载中...', end='\n\n')
sleep(1)
while True:
StudentCMS.show_help()
try:
number = int(input('请输入您要执行的功能编号:'))
if number == 1:
self.add_student()
elif number == 2:
self.del_student()
elif number == 3:
self.edit_student()
elif number == 4:
self.show_student()
elif number == 5:
self.show_all()
elif number == 6:
self.save_data_to_file()
elif number == 0:
if is_continue('退出系统'):
print('退出系统成功,感谢您使用学员信息管理系统!')
break
else:
print('未退出,返回菜单')
else:
print('很抱歉,您输入的编号有误,请重新输入')
except Exception as e:
print(f'输出错误日志----{e}')
print('发送异常,系统退出')
main.py
from student_cms import StudentCMS
if __name__ == '__main__':
cms = StudentCMS()
cms.start()
|