前言
本文记录 Python 相关的变量、运算与输入输出的相关知识。
在阅读过程中有任何问题都可以发布到评论区,有价值的问题将会放到文章末尾Q&A之中!
什么是编程
编程是编写程序代码的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
通俗来讲,编程就是人类和计算机沟通的一种方式。
Python语言基本框架
1 2 3 4 5 6 7 8 9 10 11 12 13
| import math
print("Hello, World!")
def main(): print("Hello from main!")
if __name__ == "__main__": main()
|
输出结果:
1 2
| Hello, World! Hello from main!
|
库
Python 中有一个独特的概念叫做 “库”
库(Library) 是 Python 中预先编写好的代码集合,包含了一系列函数、类、变量等,用于解决特定领域的问题。
可以将库理解为工具箱,每个工具箱里都有专门解决某类问题的工具。
分类
标准库
常用的一些标准库如下:
1 2 3 4
| import math import random import datetime import os
|
第三方库
常用的一些第三方库如下:
1 2 3 4
| import numpy import pandas import requests import matplotlib
|
调用
在 python 中,调用库时需要使用 import 关键字。
在调用时,可以调用完整的库,也可以调用某些特定的功能。
同时为了简化,也可以在调用的过程中给库进行重命名。
导入整个库
1 2 3 4 5 6 7 8 9 10 11 12
|
import math
print(math.sqrt(16))
print(math.pi)
print(math.log(100, 10))
|
导入特定功能
在导入特定功能时,需要使用 from 关键字来读取被调用的库,再使用 import 调用特定的功能。
同时导入特定功能后,在使用时就无需再写库名,直接使用功能即可。
1 2 3 4 5 6 7 8 9
| from math import sqrt, pi
print(sqrt(16)) print(pi)
print(log(100, 10))
|
给库重命名
在调用库的过程中,可以使用 as 关键字来对库进行重命名,重命名之后在编写代码时会简洁一些。
1 2 3 4 5 6 7 8 9
| import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
arr = np.array([1, 2, 3])
|
安装第三方库
什么是 pip?
pip 是 Python 的官方包管理工具,可以轻松地安装、卸载和管理第三方库。
基本安装方法
1 2 3 4 5 6 7 8 9 10 11
| pip install requests
pip install numpy pandas matplotlib
pip install requests==2.25.1
pip install --upgrade requests
|
国内镜像加速安装
由于网络原因,直接从国外源下载可能很慢,建议使用国内镜像源:
1 2 3 4 5 6 7 8
| pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
pip install -i https://mirrors.aliyun.com/pypi/simple/ numpy
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
主函数【程序入口】
对于 python 来说,实际上并没有一个明确的主函数。
也就是说,在编写python代码时,可以直接进行编写,不需要写道特定的某个函数内部。
但是没有一个明确的主函数的情况下,如果当前文件被其他文件导入使用的话,就有可能会产生错误。
所以,在编写 python 代码的过程中,通常要写明一个函数作为程序的入口,该函数被称为主函数。
对于函数类型的知识点,在之后的函数篇章内具体讲解。
定义主函数
在 python 代码中,需要通过一个特殊变量 __name__ 来获取当前模块的名称。
一般我们会将主函数命名为 main ,然后再定义一个 main 函数来编写我们的代码内容。
在上述代码中,主函数片段如下:
1 2 3 4 5 6 7
| # 主函数入口 def main(): print("Hello from main!")
# 常用入口判断 if __name__ == "__main__": main()
|
输出结果:
但是要注意的是,在 python 中,程序不会去自动读取main 函数作为程序的入口。
也就是说,如果在上述代码片段上面还有未放入任何函数的代码时,会先去执行该代码片段。
其他
缩进
在 python 代码的编写过程中,需要严格控制缩进格数。
在 Python 中函数内容是通过缩进来规定函数、判断、循环等等的范围的,处于同一缩进长度下的代码片段为同一片程序片段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import math
def main(): print("Hello from main!")
if __name__ == "__main__": main() for i in range(10): print(i)
|
英文输入
在 Python 程序编写的过程中,除注释外,所有的内容都要用英文输入,包括所有的符号。
注释
在 python 中,注释使用 # 来说明,注释内容,不参与编译,相当于学习笔记。
变量
不管使用编程语言进行编程时,都需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。
这意味着,当您创建一个变量时,就会在内存中保留一些空间。
数据类型
基本数据类型
| 类型 |
关键字 |
示例 |
描述 |
| 整型 |
int |
age = 25 |
整数,无大小限制 |
| 浮点型 |
float |
price = 19.99 |
带小数点的数字 |
| 字符串 |
str |
name = "Alice" |
文本数据,用单/双引号 |
| 布尔型 |
bool |
is_active = True |
逻辑值:True 或 False |
| 空类型 |
NoneType |
result = None |
表示空值或无值 |
容器数据类型
| 类型 |
关键字 |
示例 |
描述 |
| 列表 |
list |
numbers = [1, 2, 3] |
有序、可变的元素集合 |
| 元组 |
tuple |
coordinates = (10, 20) |
有序、不可变的元素集合 |
| 字典 |
dict |
person = {"name": "Bob"} |
键值对集合 |
| 集合 |
set |
unique_numbers = {1, 2, 3} |
无序、不重复元素集合 |
变量定义
python中定义变量时无需说明变量是什么类型的,直接写变量名同时用 = 进行赋值或者输入即可。
浮点数的赋值可以用科学计数法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 定义字符串变量 - 用于存储文本信息 name = "张三" print(f"姓名: {name}")
# 定义整数变量 - 用于存储整数值 - 使用输入的方式进行定义 age = int(input("请输入你的年龄:")) print(f"年龄: {age}")
# 定义浮点数变量 - 用于存储带小数的数值 height = 1.75 print(f"身高: {height} 米")
# 定义布尔变量 - 用于存储真/假值 is_student = True print(f"是否学生: {is_student}")
# 定义空值变量 - 表示变量尚未赋值或值为空 address = None print(f"地址: {address}")
|
规则
变量命名规则
允许的字符
- 变量名只能包含字母(a-z, A-Z)、数字(0-9)和下划线(_)
- 变量名不能以数字开头
- 变量名是大小写敏感的(age, Age, AGE 是三个不同的变量)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| username = "张三" user_name = "李四" user2 = "王五" _user = "赵六" user_ = "钱七"
print("合法的变量名示例:") print(f"username: {username}") print(f"user_name: {user_name}") print(f"user2: {user2}") print(f"_user: {_user}") print(f"user_: {user_}")
|
命名惯例[非强制要求]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| n = 10 d = "2024-01-01" lst = [1, 2, 3] tmp = calculate_value()
student_count = 10 registration_date = "2024-01-01" student_scores = [95, 88, 92] calculated_average = calculate_value()
print("有意义的变量名示例:") print(f"学生人数: {student_count}") print(f"注册日期: {registration_date}") print(f"学生分数: {student_scores}") print(f"计算平均值: {calculated_average}")
def process_user_order(user_id, order_items): """处理用户订单""" total_amount = calculate_total(order_items) order_status = "processing" return order_status, total_amount
def validate_email_format(email_address): """验证邮箱格式""" if "@" in email_address and "." in email_address: return True return False
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| student_name = "张三" total_score = 95.5 is_registered = True max_connection_count = 100
print("蛇形命名法示例:") print(f"学生姓名: {student_name}") print(f"总分: {total_score}") print(f"是否注册: {is_registered}") print(f"最大连接数: {max_connection_count}")
def calculate_total_price(): return 100
def get_user_info_by_id(user_id): return f"用户{user_id}的信息"
user_list = ["张三", "李四", "王五"] config_file_path = "/etc/app/config.ini" database_connection_pool = "连接池对象"
|
1 2 3 4 5
| for i in range(5): print(f"外层循环: {i}") for j in range(3): print(f" 内层循环: {j}")
|
- 类名使用驼峰命名法(每个单词首字母大写,不使用下划线)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| studentName = "张三" totalScore = 95.5 isRegistered = True maxConnectionCount = 100
print("小驼峰命名法示例:") print(f"学生姓名: {studentName}") print(f"总分: {totalScore}") print(f"是否注册: {isRegistered}") print(f"最大连接数: {maxConnectionCount}")
class StudentInfo: def __init__(self): self.name = "学生"
class DatabaseConnection: def __init__(self): self.connected = False
class UserManagementSystem: def __init__(self): self.users = []
print("类名使用大驼峰命名法:") student = StudentInfo() db_conn = DatabaseConnection() ums = UserManagementSystem()
|
关键字
不能使用Python的保留字(关键字)作为变量名。
Python的保留字包括:
1
| False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import keyword
print("Python 关键字列表:") print(keyword.kwlist)
if_condition = 10 for_loop = "循环" class_name = "类" function_def = "函数"
|
作用域
作用域指的是变量在程序中的可访问范围,决定了在程序的哪个部分可以访问哪个变量。
Python中有四种作用域,按照从内到外的顺序:
- 局部作用域(Local):当前函数内部
- 闭包作用域(Enclosing):包含当前函数的外部函数的作用域
- 全局作用域(Global):当前模块(文件)的作用域
- 内置作用域(Built-in):Python内置函数和异常等
这就是所谓的LEGB规则。
局部变量
✅ 局部变量在函数内部定义,只能在定义它的函数内部访问。
基本局部变量
1 2 3 4 5 6 7 8 9 10 11 12 13
| def calculate_area(): length = 10 width = 5 area = length * width print(f"面积是: {area}")
calculate_area()
|
不同函数的局部变量
1 2 3 4 5 6 7 8 9 10
| def function1(): number = 100 print(f"function1中的number: {number}")
def function2(): number = 200 print(f"function2中的number: {number}")
function1() function2()
|
全局变量
基本全局变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| school = "阳光小学" class_name = "三年级二班"
def show_info(): print(f"学校: {school}") print(f"班级: {class_name}")
def change_class(): global class_name class_name = "四年级一班" print(f"班级已改为: {class_name}")
show_info() change_class() show_info()
|
全局变量与局部变量同名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| score = 95
def test_score(): score = 88 print(f"函数内部的score: {score}")
def test_global(): global score score = 100 print(f"修改后的全局score: {score}")
print(f"最初的score: {score}") test_score()
print(f"test_score后的score: {score}") test_global()
print(f"test_global后的score: {score}")
|
输入、输出
输出函数 - print()
什么是输出?
输出就是把电脑里的信息显示给我们看,就像在纸上写字一样。
1 2
| print("我的名字是:", "小明", "今年", 10, "岁")
|
1 2
| print("我" + "喜欢" + "编程")
|
格式符基本介绍
当使用 print 对变量进行输出时,可以使用格式符来替代语句中的变量,然后再使用 % 进行链接。
| 格式符 |
说明 |
示例 |
%d |
格式化整数,会直接取整 |
%d → 3 |
%f |
格式化浮点数,可以设置保留的小数点 |
%.2f → 3.14 |
%s |
格式化字符串 |
%s → “小明” |
基本格式化语法
1 2
| "格式化字符串" % (数据1, 数据2, 数据3)
|
简单示例
1 2 3 4 5
| print("数字:%d" % 10)
print("%d + %d = %d" % (3, 5, 8))
|
详细用法示例
整数格式化 %d
1 2 3 4 5
| age = 12 height = 150.7
print("我今年%d岁" % age) print("身高大约%d厘米" % height)
|
浮点数格式化 %f
1 2 3 4 5 6
| pi = 3.1415926 weight = 45.5
print("圆周率:%f" % pi) print("体重:%.1f公斤" % weight) print("身高:%.2f米" % 1.75)
|
字符串格式化 %s
1 2 3 4 5
| name = "小明" hobby = "打篮球"
print("我叫%s" % name) print("%s喜欢%s" % (name, hobby))
|
综合应用示例
1 2 3 4 5 6 7 8
| name = "小明" age = 12 height = 1.4567 weight = 45.123
print("我的名字叫%s,今年%d岁了,身高%.2f米,体重%.1f公斤" % (name, age, height, weight))
|
宽度控制(占位符)
浮点数宽度控制
1 2 3 4
| number = 12.345
print("数字:%8.2f" % number) print("数字:%5.1f" % number)
|
字符串宽度控制
1 2 3 4
| name = "小明"
print("姓名:%10s" % name) print("姓名:%-10s" % name)
|
更多宽度控制示例
1 2 3 4 5 6 7
| print("|%5d|" % 123) print("|%-5d|" % 123)
print("|%8.2f|" % 3.14159) print("|%-8.2f|" % 3.14159)
|
实用小技巧
对齐显示表格
1 2 3
| print("%-10s %5s %8s" % ("姓名", "年龄", "身高")) print("%-10s %5d %8.2f" % ("小明", 12, 1.56)) print("%-10s %5d %8.2f" % ("小红", 11, 1.48))
|
输出:
1 2 3
| 姓名 年龄 身高 小明 12 1.56 小红 11 1.48
|
百分比显示
1 2
| score = 0.8567 print("正确率:%.1f%%" % (score * 100))
|
注意事项
- 格式符顺序:格式符的顺序必须与后面数据的顺序一致
- 数据类型匹配:确保格式符与数据类型匹配
- 转义百分号:要显示真正的
%符号,需要写两个%%
1 2 3 4 5
| print("%s考了%d分,正确率%.1f%%" % ("小明", 95, 95.0))
|
这种格式化方法虽然经典,但在Python 3.6+中,更推荐使用f-string格式化方法,它更加简洁易读!
什么是输入?
输入就是我们通过键盘给电脑发送信息,就像跟电脑说话一样。
1 2 3
| name = input("请输入你的名字:") print("你好,", name)
|
1 2 3 4
| num1 = input("请输入第一个数字:") num2 = input("请输入第二个数字:") print("两个数字相加等于:", num1 + num2)
|
注意: 上面这个例子有问题!input()输入的都是文字,不能直接计算。
输入内容的类型转换
为什么需要转换?
因为input()把所有的输入都当作文字[字符类型]处理,数字也需要先变成真正的数字才能计算。
1 2 3 4
| num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字:")) print("两个数字相加等于:", num1 + num2)
|
1 2 3
| price = float(input("请输入商品价格:")) print("价格是:", price)
|
实用的输入输出例子
例子1:简单的自我介绍
1 2 3 4 5 6 7
| name = input("你叫什么名字?") age = input("你今年几岁?") hobby = input("你喜欢做什么?")
print("大家好,我叫", name) print("我今年", age, "岁") print("我喜欢", hobby)
|
例子2:计算器
1 2 3 4 5 6 7 8
| print("=== 简单计算器 ===") a = int(input("请输入第一个数:")) b = int(input("请输入第二个数:"))
print(a, "+", b, "=", a + b) print(a, "-", b, "=", a - b) print(a, "×", b, "=", a * b) print(a, "÷", b, "=", a / b)
|
例子3:画三角
1 2 3 4
| char = input("你想用什么字符画三角?") print(" " + char) print(" " + char*3) print(char*5)
|
小贴士
- 引号要用英文的:
"正确" ✅ “错误” ❌
- 括号也要用英文的:
print() ✅ print() ❌
- 冒号不能少:
if age > 10: ✅ if age > 10 ❌
input() 输入的都是文字[字符类型],需要计算时要转换成数字
运算
运算符是一种告诉计算机执行特定的数学或逻辑操作的符号。
基本的运算符包括简单的加【+】减【-】乘【*】除【/】
在 Python 语言中,额外的运算还包括:
- 取余数【%】 - 计算除法后的余数
- 幂运算【**】 - 计算一个数的多少次方
- 整除【//】 - 只保留除法结果的整数部分
除此之外,Python 中还有一些特殊的赋值运算符,例如:
- 累加【+=】 - 给变量自身加上一个值
- 累减【-=】 - 给变量自身减去一个值
- 累乘【*=】 - 给变量自身乘以一个值
- 累除【/=】 - 给变量自身除以一个值
Python 还提供了类型转换函数来改变数据的类型,比如:
- int() - 转换成整数
- str() - 转换成字符串
- float() - 转换成小数
- bool() - 转换成布尔值(True或False)
简单的算术运算
加法运算
1 2 3 4 5 6
| a = 5 + 3 print(a)
print(10 + 2)
|
减法运算
1 2 3 4 5
| b = 10 - 4 print(b)
print(15 - 8)
|
乘法运算
1 2 3 4 5 6
| c = 3 * 4 print(c)
print(5 * 6)
|
除法运算
1 2 3 4 5
| d = 10 / 2 print(d)
print(9 / 3)
|
特殊的运算
整除运算
1 2 3 4 5
| e = 10 // 3 print(e)
print(7 // 2)
|
求余运算
1 2 3 4 5
| f = 10 % 3 print(f)
print(7 % 2)
|
幂运算
1 2 3 4 5
| g = 2 ** 3 print(g)
print(3 ** 2)
|
变量自运算
累加运算
1 2 3 4 5 6 7 8
| x = 5 x += 3 print(x)
y = 10 y += 2 print(y)
|
累减运算
1 2 3 4 5 6 7 8
| m = 10 m -= 4 print(m)
n = 8 n -= 3 print(n)
|
实际应用例子
温度转换器
1 2 3 4
| celsius = 25 fahrenheit = 9 / 5 * celsius + 32 print(fahrenheit)
|
购物计算
1 2 3 4 5 6 7
| pencil_price = 2 notebook_price = 5
total = pencil_price * 3 + notebook_price * 2 print(total)
|
分糖果游戏
1 2 3 4 5 6 7 8 9 10
| candies = 10 children = 3
each = candies // children left = candies % children
print("每个小朋友分到:", each, "个糖果") print("还剩下:", left, "个糖果")
|
小贴士 💡
- 运算顺序:和数学一样,先乘除后加减
- 括号优先:有括号先算括号里的
- 注意符号:乘号是
*,不是×;除号是/,不是÷
这些运算就像做数学题一样简单有趣,多练习就能熟练掌握!
Q&A