02 - Python入门 - 基础语法
Python 最突出的优势就是简洁高效。很多编程语言需要写大量繁琐的样板代码,而用 Python 往往几行就能实现同样功能。它无需编译,不用提前声明变量类型,甚至不必编写固定的 main 函数。 你可以直接打开文件编写代码,写完就能运行,上手极其轻便。
下面,我们就从最简单的程序开始入门。
01.Hello World 与程序结构
# 从第一行开始,从上往下逐行执行
print("Hello, World!")
print("第二行")
print("第三行")
不需要 import,不需要 class,不需要 main 函数。Python 的执行方式很直觉:从文件的第一行开始,从上往下逐行执行,就这么简单。
还有一件事要提前说:Python 用缩进来表示代码块,而不是花括号 {}。这意味着缩进并不是可选的美化,而是语法的一部分。后面讲到 if、for 的时候你就会看到,缩进错了程序会直接报错。
Python 的注释用 # 开头,# 后面的内容会被忽略:
# 这是一行注释
print("hello") # 这也是注释
02.输出
print() 基本用法
print() 是 Python 中最常用的输出函数,把内容打印到控制台:
# 打印字符串
print("Hello, World!")
# 打印数字
print(42)
print(3.14)
# 打印多个值,默认用空格分隔
print("姓名:", "Alice", "年龄:", 25)
print() 可以接收多个参数,默认用空格隔开,打印完自动换行。
sep 和 end 参数
如果你想改变分隔符或者取消自动换行,可以用 sep 和 end 参数:
# sep:改变多个参数之间的分隔符
# 输出:2025-03-18
print(2025, "03", 18, sep="-")
# end:改变结尾字符(默认是换行 \n)
# 下面两个 print 会打印在同一行
print("Hello", end=" ")
print("World")
f-string 格式化输出
在字符串前面加一个 f,就可以在花括号 {} 里直接写变量名或表达式,Python 会自动把它们替换成对应的值。这叫 f-string,是 Python 中最常用的字符串格式化方式:
name = "Alice"
age = 25
# 在字符串中嵌入变量
print(f"我叫{name},今年{age}岁")
# 花括号里可以写表达式
print(f"明年{age + 1}岁")
# 控制小数位数::.2f 表示保留 2 位小数
pi = 3.14159
print(f"pi = {pi:.2f}")
# 控制宽度和对齐
for i in range(1, 4):
# :>5 表示右对齐,占 5 个字符宽度
print(f"第{i}行:{i * i:>5}")
f"{pi:.2f}" 这种写法在算法题中经常用到,比如题目要求"保留两位小数输出"。冒号后面的 .2f 就是格式说明符,.2 表示两位小数,f 表示浮点数格式。
03.输入
input() 读取一行
input() 从控制台读取一行输入,返回的永远是字符串。即使用户输入的是数字,拿到的也是字符串 "123" 而不是数字 123,要读取数字就需要手动转换类型:
# input() 读到的是字符串,用 int() 转成整数
age = int(input())
print(f"你今年{age}岁,明年{age + 1}岁")
print(type(age))
# 如果不转换,+ 会变成字符串拼接而不是加法
# age = input()
# print(age + 1) # 报错!字符串和整数不能相加
一行读取多个值
很多算法题的输入是一行多个数字,用空格隔开。这时候用 split() 切分,再用 map() 批量转换类型:
# input() 读一行字符串 "3 5"
# split() 按空格切分成列表 ["3", "5"]
# map(int, ...) 把每个元素转成整数
a, b = map(int, input().split())
print(f"{a} + {b} = {a + b}")
这个 map(int, input().split()) 是 Python 算法题中的标准输入套路,建议记住。拆解一下:
input()读取一行,比如"3 5".split()按空格切分成列表["3", "5"]map(int, ...)对列表中每个元素调用int()转换a, b = ...把结果拆包赋值给两个变量
如果一行有很多数字需要存到列表里,可以这样:
nums = list(map(int, input().split()))
print(nums)
print(f"共 {len(nums)} 个数,总和 = {sum(nums)}")
04.变量与数据类型
Python 是动态类型语言,变量不需要声明类型,赋什么值就是什么类型,而且同一个变量可以随时改变类型:
x = 42
print(x, type(x))
x = 3.14
print(x, type(x))
x = "hello"
print(x, type(x))
x = True
print(x, type(x))
x = None
print(x, type(x))
type() 函数可以查看任何值的类型。
Python 的 int 有一个很大的优势:没有大小限制,不管数字多大都能精确表示,不会溢出。这在处理大数运算的算法题时非常方便,比如 2 ** 1000 也能精确计算。
None 表示"什么都没有",判断一个变量是否为 None 推荐用 is 而不是 ==:
result = None
if result is None:
print("还没有结果")
05.类型转换
Python 的类型转换都是用对应的类型名当函数来调用:
# int():转成整数
print(int(3.99)) # 3(直接截断,不是四舍五入)
print(int("42")) # 42
print(int(True)) # 1
print(int(False)) # 0
# float():转成浮点数
print(float(42)) # 42.0
print(float("3.14"))# 3.14
# str():转成字符串
print(str(42)) # "42"
print(str(3.14)) # "3.14"
# bool():转成布尔值
# 0、0.0、空字符串、None 是 False,其他都是 True
print(bool(0)) # False
print(bool("")) # False
print(bool(42)) # True
print(bool("hi")) # True
int() 转换浮点数时是直接截断小数部分,不是四舍五入。想要四舍五入可以用 round() 函数。
06.运算符
a, b = 17, 5
print(f"{a} + {b} = {a + b}") # 22
print(f"{a} - {b} = {a - b}") # 12
print(f"{a} * {b} = {a * b}") # 85
# / 真除法,结果是浮点数
print(f"{a} / {b} = {a / b}") # 3.4
# // 整除(向下取整)
print(f"{a} // {b} = {a // b}") # 3
# % 取余
print(f"{a} % {b} = {a % b}") # 2
# ** 幂运算
print(f"2 ** 10 = {2 ** 10}") # 1024
print(f"9 ** 0.5 = {9 ** 0.5}") # 3.0(开平方)
这里有两个重点:
/是真除法,17 / 5的结果是3.4,不是3。想要整除要用//。**是幂运算,2 ** 10就是 2 的 10 次方。9 ** 0.5就是 9 的 0.5 次方,也就是开平方。
比较与逻辑运算符
a, b = 10, 20
# 比较运算符
print(a == b) # False(等于)
print(a != b) # True(不等于)
print(a < b) # True
print(a >= b) # False
# Python 支持链式比较,像数学表达式一样
x = 15
print(1 < x < 20) # True(等价于 1 < x and x < 20)
print(10 <= x <= 20) # True
# 逻辑运算符用英文单词 and、or、not
# and:两个都为真才是真
print(a > 5 and b > 15) # True
# or:有一个为真就是真
print(a > 100 or b > 15) # True
# not:取反
print(not (a > 100)) # True
Python 的链式比较 1 < x < 20 很方便,写起来像数学一样自然。逻辑运算符用的是 and、or、not 这三个英文单词,而不是符号。
位运算
位运算在处理二进制相关问题时非常高效。
a = 10 # 二进制 1010
b = 12 # 二进制 1100
# & 按位与:两个都是 1 才是 1
# 1010 & 1100 = 1000(十进制 8)
print(f"{a} & {b} = {a & b}")
# | 按位或:有一个是 1 就是 1
# 1010 | 1100 = 1110(十进制 14)
print(f"{a} | {b} = {a | b}")
# ^ 按位异或:不同为 1,相同为 0
# 1010 ^ 1100 = 0110(十进制 6)
print(f"{a} ^ {b} = {a ^ b}")
# ~ 按位取反
print(f"~{a} = {~a}") # -11
# << 左移(相当于乘以 2)
print(f"{a} << 1 = {a << 1}") # 20
# >> 右移(相当于除以 2)
print(f"{a} >> 1 = {a >> 1}") # 5
# 一个经典用法:判断奇偶
n = 7
if n & 1 == 1:
print(f"{n} 是奇数")
else:
print(f"{n} 是偶数")
07.控制流
if / elif / else
Python 用缩进来表示代码块,没有花括号。条件后面跟一个冒号 :,下一行缩进(通常 4 个空格)就是条件成立时要执行的代码:
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
几个关键点:
- 条件后面一定要有冒号
: - 代码块用缩进表示,同一个代码块的缩进必须一致
elif是 “else if” 的缩写- 条件不需要括号(加了也不报错,但 Python 风格不加)
for 循环
Python 的 for 循环用来遍历一个序列(列表、字符串、range 等),语法是 for 变量 in 序列:
# range(n) 生成 0 到 n-1 的整数序列
# 输出:0 1 2 3 4
for i in range(5):
print(i, end=" ")
print()
# range(start, end) 生成 start 到 end-1
# 输出:2 3 4 5 6
for i in range(2, 7):
print(i, end=" ")
print()
# range(start, end, step) 带步长
# 输出:0 2 4 6 8
for i in range(0, 10, 2):
print(i, end=" ")
print()
# 倒序遍历
# 输出:5 4 3 2 1
for i in range(5, 0, -1):
print(i, end=" ")
print()
range(n) 生成的序列是左闭右开的,从 0 到 n-1。这和数组下标的范围完全一致,用起来非常自然。
遍历列表和 enumerate
for 也可以直接遍历列表、字符串等。如果遍历的同时还需要知道下标,用 enumerate():
# 直接遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(fruit)
print("---")
# enumerate 同时返回下标和元素
for i, fruit in enumerate(fruits):
print(f"第{i}个:{fruit}")
print("---")
# 遍历字符串(逐个字符)
for ch in "Hello":
print(ch, end=" ")
print()
enumerate() 返回的是 (下标, 元素) 的配对,用起来比手动维护一个计数器变量方便多了。
while 循环
while 循环在条件为真时重复执行:
# 计算 1 + 2 + ... + 100
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(f"1 到 100 的和 = {total}")
注意 Python 没有 do-while 循环,也没有 i++ 的写法,自增只能写 i += 1。
break 和 continue
break 立刻跳出整个循环,continue 跳过当前这一轮、进入下一轮:
# break:找到第一个能被 7 整除的数就停止
for i in range(1, 101):
if i % 7 == 0:
print(f"第一个能被 7 整除的数:{i}")
break
# continue:跳过偶数,只打印奇数
# 输出:1 3 5 7 9
for i in range(1, 11):
if i % 2 == 0:
continue
print(i, end=" ")
print()
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)