Python 最突出的优势就是简洁高效。很多编程语言需要写大量繁琐的样板代码,而用 Python 往往几行就能实现同样功能。它无需编译,不用提前声明变量类型,甚至不必编写固定的 main 函数。 你可以直接打开文件编写代码,写完就能运行,上手极其轻便。

下面,我们就从最简单的程序开始入门。

01.Hello World 与程序结构

# 从第一行开始,从上往下逐行执行
print("Hello, World!")
print("第二行")
print("第三行")

不需要 import,不需要 class,不需要 main 函数。Python 的执行方式很直觉:从文件的第一行开始,从上往下逐行执行,就这么简单。

还有一件事要提前说:Python 用缩进来表示代码块,而不是花括号 {}。这意味着缩进并不是可选的美化,而是语法的一部分。后面讲到 iffor 的时候你就会看到,缩进错了程序会直接报错。

Python 的注释用 # 开头,# 后面的内容会被忽略:

# 这是一行注释
print("hello")  # 这也是注释

02.输出

print() 基本用法

print() 是 Python 中最常用的输出函数,把内容打印到控制台:

# 打印字符串
print("Hello, World!")

# 打印数字
print(42)
print(3.14)

# 打印多个值,默认用空格分隔
print("姓名:", "Alice", "年龄:", 25)

print() 可以接收多个参数,默认用空格隔开,打印完自动换行

sep 和 end 参数

如果你想改变分隔符或者取消自动换行,可以用 sepend 参数:

# 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 算法题中的标准输入套路,建议记住。拆解一下:

  1. input() 读取一行,比如 "3 5"
  2. .split() 按空格切分成列表 ["3", "5"]
  3. map(int, ...) 对列表中每个元素调用 int() 转换
  4. 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(开平方)

这里有两个重点:

  1. / 是真除法,17 / 5 的结果是 3.4,不是 3。想要整除要用 //
  2. ** 是幂运算,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 很方便,写起来像数学一样自然。逻辑运算符用的是 andornot 这三个英文单词,而不是符号。

位运算

位运算在处理二进制相关问题时非常高效。

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) 生成的序列是左闭右开的,从 0n-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()
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐