Python学习笔记其二

写在最前

先看完教程链接,再看相关实例!

几个容易遇到的坑:

  • 编程语言中的符号一定不要打成中文符号!!!经常容易打错的有:括号(),逗号,,引号””
  • 中文乱码考虑一下有没有把编码形式改成utf-8
  • 注意观察参数需不需要加引号,如open函数的encoding=”utf-8”就要加引号
  • 有问题把报错和源码复制给Ai进行询问

输入与输出

Python3 输入和输出 | 菜鸟教程

Python两种输出值的方式: 表达式语句和 print() 函数。

第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。

如果你希望输出的形式更加多样,可以使用 str.format() 函数来格式化输出值。

如果你希望将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现。

  • str(): 函数返回一个用户易读的表达形式。
  • repr(): 产生一个解释器易读的表达形式。

str.format占位符

1
2
3
4
5
6
7
8
9
name = "Bob"
age = 20
score = 88.456

print("姓名:{}, 年龄:{}, 成绩:{:.1f}".format(name, age, score))
# 输出:姓名:Bob, 年龄:20, 成绩:88.5

print("姓名:{0}, 年龄:{1}, 成绩:{2:.2f}".format(name, age, score))
# 输出:姓名:Bob, 年龄:20, 成绩:88.46

print分开字符串与变量

1
print(f"The value of test is: {test}")	##引号前加一“f”,在想要显示变量值的地方加一个大括号{},其中写入变量名

% 占位符

这是最早的字符串格式化方法。与C语言基本一致。常用的占位符包括:

%s:字符串

%d:整数

%f:浮点数

1
print("姓名:%s, 年龄:%d, 成绩:%.2f" % (name, age, score))

input输入

1
input("提示的文本")

一般直接赋给变量值

1
age = int(input("年龄"))		##由于年龄是个整型,这里使用int对其进行格式化

例子

1
2
3
4
5
6
7
8
9
10
name = input("姓名:")
age = int(input("年龄:"))
love_programming_language = input("喜欢的编程语言(以逗号分隔):")
age_after_3years = int(age + 3)

print("个人信息")
print(f"姓名:{name}")
print("年龄:%d", age)
print(f"喜欢的编程语言:{love_programming_language}")
print(f"三年后年龄:{age_after_3years}")

open函数

Python3 File 方法 | 菜鸟教程

os模块

Python3 OS 文件/目录方法 | 菜鸟教程

问题2:文件处理
编写一个程序,使用 os 模块和文件方法完成以下操作:1.创建一个名为”test files”的目录(如果不存在)
2.在该目录下创建一个文本文件”notes.txt
3.向文件中写入 3 行内容已创建目录: test files已向文件 notes.txt 写入内容
文件内容如下:
第1行: 这是第一行内容

第2行: Python文件操作练习

第3行: 使用os模块和文件方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os	##导入os模块

status1 = os.listdir() ##获取当前目录下文件,为下面看看有没有"test_files"做准备
if "test_files" in status1: ##判断"test_files"在不在当前工作目录下
os.chdir("test_files") ##如果存在就切换工作目录到"test_files"中
else:
os.mkdir("test_files") ##如果不存在就创建目录
os.chdir("test_files") ##并进入"test_files"
status2 = os.listdir() ##获取"test_files"目录下文件,为下面看看有没有做准备
if "notes.txt" in status2: ##判断"notes.txt"在不在当前工作目录下
os.remove("notes.txt") ##如果在就删除
with open("notes.txt", mode='x', encoding="utf-8") as f: ##创建并打开notes.txt,以写入方式打开(mode='x'),编解码方式为"utf-8"(使用utf-8以避免中文报错)
f.write("这是第一行内容\nPython文件操作练习\n使用os模块和文件方法") ##写入内容至notes.txt
f.flush() ##刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
f.close() ##关闭文件。关闭后文件不能再进行读写操作。
print("已向文件notes.txt中写入内容") ##进行提示

函数

Python3 函数 | 菜鸟教程

name

Python namemain | 菜鸟教程

1
2
if __name__ == "__main__":
main()

命名为主函数。Python中,总是从主函数开始运行。

例如:

1
2
3
4
5
6
7
8
def greet():
print("来自 example 模块的问候!")

if __name__ == "__main__": ##模块将从此处开始运行
print("该脚本正在直接运行。")
greet()
else:
print("该脚本作为模块被导入。")

问题3:编写def函数

编写一个名为sum_and_average的函数

要求:函数接收一个包含数字的列表作为参数函数返回两个值:列表中所有数字的总和,以及这些数字的平均值

如果传入的列表为空,总和返回 0,平均值返回 0.0

编写代码测试这个函数,至少测试两种情况:包含数字的列表和空列表

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def sum_and_average(list):	##定义sum_and_average(list)
total = sum(list) ##求和
count = len(list) ##统计传入列表中的值的数量
average = total / count if count > 0 else 0 ##判断,因为求平均要求分母不为零,有传入为空的要求,故进行判断,当传入为空时使average为0,传入不为空时用总和除以值的数量求平均
print("求和:%d" %total) ##打印求和量,类型是整数
print("平均:%.1f" %average) ##打印求平均量,类型是浮点型,保留小数点后一位
return None ##返回None,此行代码可不写

if __name__ == "__main__": ##main
before_list = input("输入一些数字,使用英文逗号间隔:") ##对传入数据在before_list变量中进行预存储,方便后续校验非空
if not before_list: ##如果传入内容为空
list = before_list ##则让list列表为空
else: ##如果传入内容不为空
list = [int(x) for x in before_list.split(',')] ##将输入before_list中值传入list中,英文逗号为分隔符
sum_and_average(list) ##运行自定义函数

高难度内容,Python最难的内容,最抽象的内容,最绕的内容

Python3 面向对象 | 菜鸟教程

模块

Python3 模块 | 菜鸟教程

例如:

问题4:设计book类
设计一个Book类,要求如下
属性:书名(title)、作者(author)页数(pages)
方法:构造方法初始化所有属性
is_long()方法:如果页数超过 300 页,返回True,否则返回False

get_info()方法:返回包含书名、作者和页数的字符串,格式如”《Python 编程》- 张三 (280 页)”

最后创建 1个Book对象,分别调用上述方法并打印结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Book:		##定义一个Book类
def __init__(self,title,author,pages): ##详情请见教程__init__类,必须要有self,否则无法传入主函数输入的变量值
self.title = title
self.author = author
self.pages = pages
def is_long(self): ##定义一个is_long函数
if self.pages > 300: ##判断页数是否大于300
return True ##如果大于300返回True
else:
return False ##如果小于300返回False

def get_info(self): ##定义一个get_info函数
info = f"{self.title} - {self.author} ({self.pages} 页)" ##配置一个info函数,方便后续显示
return info ##返回info变量,方便后续调用


if __name__ == "__main__": ##主函数
title = str(input("请输入书名(带书名号):")) ##获取书名
author = str(input("请输入作者名:")) ##获取作者名
pages = int(input("请输入页数:")) ##获取书页数
x = Book(title,author,pages) ##将获取到的三个变量传入Book类对应的变量中
print(f"是长书吗:{x.is_long()}") ##打印判断结果
print(f"本书信息:{x.get_info()}") ##打印本书信息

推导式

Python 推导式 | 菜鸟教程

迭代器与生成器

Python3 迭代器与生成器 | 菜鸟教程

with 关键字

Python with 关键字 | 菜鸟教程

错误和异常

Python3 错误和异常 | 菜鸟教程

标准库概览

Python3 标准库概览 | 菜鸟教程

实例

Python3 实例 | 菜鸟教程