一、回顾与本篇目标
上一篇我们安装了 Python,写出了第一段程序,还和 JavaScript 做了对比。你知道了 Python 用缩进代替花括号、变量不需要声明关键字、print() 用来输出内容。
这一篇,我们要把 Python 最基础的语法系统地过一遍。学完之后,你就能用 Python 独立写出简单的小程序了——能接收用户输入、能处理数据、能用不同格式输出结果。
本篇的目标:
- 掌握 Python 的变量命名规则和赋值方式
- 理解 Python 的数字类型和常用运算
- 学会字符串的所有常用操作
- 学会获取用户输入——
input() - 掌握格式化输出的多种方式
二、变量:名字的规矩和赋值的花样
上一篇你看到了,Python 声明变量不需要 let 或 const,直接写名字和赋值就行。但 Python 对变量名有一些规矩。
变量命名规则
- 只能包含字母、数字、下划线。不能有空格、中文(虽然 Python 3 其实支持中文变量名,但千万别用)、特殊符号。
- 不能以数字开头:
1name不合法,name1合法。 - 区分大小写:
name和Name是两个不同的变量。 - 不能用 Python 的关键字:比如
if、for、while、class、def等。Python 会直接报错。 - 命名习惯:Python 社区强烈推荐用下划线命名法——全部小写字母,单词之间用下划线连接。例如
user_name、student_score。JavaScript 常用的驼峰命名法(userName)在 Python 里也不报错,但不符合 Python 社区的惯例,别人看你的代码会觉得奇怪。
合法与不合法的变量名示例
# 合法的变量名
name = '张三'
user_name = '李四'
age2 = 25
_score = 100 # 下划线开头有特殊含义,后面会讲
PI = 3.14159 # 全大写通常表示常量
# 不合法的变量名(会报错)
# 1name = '错误' # 不能以数字开头
# user-name = '错误' # 不能用连字符
# if = 10 # 不能用关键字
# my name = '错误' # 不能有空格
Python 的赋值方式比 JavaScript 更灵活
除了普通的单变量赋值,Python 还支持一些简洁的写法:
1. 多重赋值:一行给多个变量赋值
# 同时给三个变量赋值
x, y, z = 10, 20, 30
print(x) # 10
print(y) # 20
print(z) # 30
# 实用场景:交换两个变量的值,不需要临时变量
a = 1
b = 2
a, b = b, a
print(a) # 2
print(b) # 1
2. 链式赋值:多个变量赋同一个值
# 三个变量都是 0
count = total = sum = 0
print(count, total, sum) # 0 0 0
3. 复合赋值运算符
score = 100
score += 10 # 相当于 score = score + 10
score -= 5 # 相当于 score = score - 5
score *= 2 # 相当于 score = score * 2
score /= 3 # 相当于 score = score / 3
# Python 特有的
score //= 2 # 整除赋值
score **= 2 # 幂运算赋值
score %= 3 # 取余赋值
三、数字类型:整数、浮点数、复数
Python 的数字类型比 JavaScript 丰富。
整数(int)
和 JS 不同,Python 的整数没有大小限制。理论上你可以算 1000 位的数字,Python 也不会溢出。这是 Python 在科学计算领域受欢迎的原因之一。
small = 42
big = 123456789012345678901234567890
huge = 2 ** 100 # 2 的 100 次方,一个非常大的数
print(huge) # 1267650600228229401496703205376
二进制、八进制、十六进制:
binary = 0b1010 # 二进制,十进制为 10
octal = 0o17 # 八进制,十进制为 15
hexadecimal = 0xFF # 十六进制,十进制为 255
print(binary, octal, hexadecimal) # 10 15 255
浮点数(float)
浮点数就是带小数点的数字。Python 的浮点数和 JavaScript 一样,基于 IEEE 754 标准,所以也存在精度问题:
print(0.1 + 0.2) # 0.30000000000000004 —— 跟 JS 一模一样的问题
科学计数法:
speed_of_light = 3e8 # 3 × 10 的 8 次方 = 300000000
tiny = 1.5e-3 # 0.0015
print(speed_of_light) # 300000000.0
print(tiny) # 0.0015
复数(complex)
Python 原生支持复数,这在科学计算中非常有用:
z = 3 + 4j
print(z.real) # 3.0 —— 实部
print(z.imag) # 4.0 —— 虚部
日常开发基本用不到复数,但知道 Python 有这个能力就行。
算术运算符
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
+ |
加法 | 10 + 3 |
13 |
- |
减法 | 10 - 3 |
7 |
* |
乘法 | 10 * 3 |
30 |
/ |
除法(总是得到浮点数) | 10 / 3 |
3.3333333333333335 |
// |
整除(向下取整) | 10 // 3 |
3 |
% |
取余数 | 10 % 3 |
1 |
** |
幂运算 | 2 ** 10 |
1024 |
Python 特有的两个运算符:
//:整除,结果向下取整。JS 没有这个运算符,需要用Math.floor()。**:幂运算。JS 里是Math.pow()或 ES7 的**。
注意 / 和 // 的区别:
print(10 / 3) # 3.3333333333333335 —— 普通除法,结果总是浮点数
print(10 // 3) # 3 —— 整除,得到整数部分
类型转换函数
print(int('42')) # 42 —— 字符串转整数
print(float('3.14')) # 3.14 —— 字符串转浮点数
print(int(3.9)) # 3 —— 浮点数转整数(直接截断,不是四舍五入)
print(str(100)) # '100' —— 数字转字符串
print(round(3.14159, 2)) # 3.14 —— 四舍五入保留两位小数
print(abs(-10)) # 10 —— 绝对值
print(max(3, 7, 1)) # 7 —— 取最大值
print(min(3, 7, 1)) # 1 —— 取最小值
print(pow(2, 10)) # 1024 —— 和 2 ** 10 一样
四、字符串:文本处理的瑞士军刀
字符串是编程中最常用的数据类型之一。Python 的字符串操作非常强大,而且设计得比 JavaScript 更一致。
创建字符串的四种方式
# 单引号
s1 = '你好,世界'
# 双引号(和单引号完全等价,选一种你喜欢的就行)
s2 = "你好,世界"
# 三引号:可以跨多行
s3 = '''这是第一行
这是第二行
这是第三行'''
# 三双引号也可以
s4 = """这也是
多行字符串"""
和 JavaScript 一样,单引号里可以直接写双引号,双引号里可以直接写单引号,不需要转义:
quote = "他说:'Python 很简单'"
print(quote) # 他说:'Python 很简单'
字符串的索引(下标)
Python 中字符串的每个字符都有一个编号,从 0 开始。你可以用 字符串[索引] 来获取单个字符:
text = 'Python'
print(text[0]) # 'P' —— 第一个字符
print(text[1]) # 'y' —— 第二个字符
print(text[-1]) # 'n' —— 倒数第一个字符
print(text[-2]) # 'o' —— 倒数第二个字符
负索引是 Python 的一个特色:-1 表示最后一个,-2 表示倒数第二个,依此类推。JS 里获取最后一个字符要写 str[str.length - 1],Python 的 text[-1] 简洁得多。
字符串切片:截取子串
切片是 Python 字符串操作中最强大的功能。语法:字符串[开始:结束:步长]
text = 'Hello World'
print(text[0:5]) # 'Hello' —— 从索引 0 到索引 5(不包括 5)
print(text[6:]) # 'World' —— 从索引 6 到末尾
print(text[:5]) # 'Hello' —— 从开头到索引 5(不包括 5)
print(text[:]) # 'Hello World' —— 整个字符串的副本
# 步长
print(text[::2]) # 'HloWrd' —— 每隔一个字符取一个
print(text[::-1]) # 'dlroW olleH' —— 反向,相当于反转字符串
切片规则:
[开始:结束]:包括开始,不包括结束。- 省略开始:从开头取。
- 省略结束:取到末尾。
[::-1]:反转整个字符串,这是一个非常常用的技巧。
字符串的常用方法
Python 的字符串方法非常多,这里列出最常用的:
text = ' Hello Python '
# 大小写转换
print(text.upper()) # ' HELLO PYTHON ' —— 全部大写
print(text.lower()) # ' hello python ' —— 全部小写
print(text.title()) # ' Hello Python ' —— 每个单词首字母大写
# 去除空白
print(text.strip()) # 'Hello Python' —— 去除首尾空白
print(text.lstrip()) # 'Hello Python ' —— 只去除左侧空白
print(text.rstrip()) # ' Hello Python' —— 只去除右侧空白
# 查找和替换
print(text.find('Python')) # 8 —— 返回子串的位置,找不到返回 -1
print(text.replace('Python', 'World')) # ' Hello World ' —— 替换
# 判断开头和结尾
print(text.startswith(' He')) # True
print(text.endswith(' ')) # True
# 拆分和拼接
words = '苹果,香蕉,橘子'
print(words.split(',')) # ['苹果', '香蕉', '橘子'] —— 按逗号分割成列表
print(', '.join(['苹果', '香蕉', '橘子'])) # '苹果, 香蕉, 橘子' —— 用逗号拼接列表
# 计数
print('hello hello hello'.count('hello')) # 3 —— 统计子串出现次数
和 JavaScript 的对比:
text.upper()相当于 JS 的text.toUpperCase()。text.strip()相当于 JS 的text.trim()。text.split(',')和 JS 一样。','.join(list)在 JS 里是list.join(',')——注意调用的对象反过来了。JS 是在数组上调用join,Python 是在分隔符字符串上调用join。这是一个很容易搞混的点。
格式化字符串:把变量嵌入到文字中
Python 有三种方式把变量嵌入到字符串中,最推荐的是 f-string(Python 3.6 以上):
name = '张三'
age = 28
score = 95.5
# 方式一:f-string(最推荐,Python 3.6+)
print(f'我叫{name},今年{age}岁,成绩是{score}分')
# 方式二:format 方法(旧版,但也很常用)
print('我叫{},今年{}岁,成绩是{}分'.format(name, age, score))
# 方式三:% 占位符(老式风格,不推荐但可能会在旧代码里看到)
print('我叫%s,今年%d岁,成绩是%.1f分' % (name, age, score))
f-string 的更多用法:
# 可以在花括号里做运算
a = 10
b = 3
print(f'{a} + {b} = {a + b}') # 10 + 3 = 13
print(f'{a} / {b} = {a / b:.2f}') # 10 / 3 = 3.33 —— :.2f 表示保留两位小数
# 对齐和填充
print(f'{name:>10}') # ' 张三' —— 右对齐,总宽度 10
print(f'{name:<10}') # '张三 ' —— 左对齐
print(f'{name:^10}') # ' 张三 ' —— 居中
print(f'{name:*^10}') # '****张三****' —— 用星号填充
f-string 是 Python 最方便的字符串格式化方式,相当于 JavaScript 的模板字符串(`我叫${name}`)。
五、获取用户输入:input()
input() 函数让程序能接收用户从键盘输入的内容。它相当于 JavaScript 里的 prompt()。
基本用法
# 提示用户输入姓名
name = input('请输入你的名字:')
print(f'你好,{name}!')
程序运行到 input() 时会暂停,等待用户输入。用户输入内容并按回车后,输入的内容以字符串形式返回,存储到 name 变量中。
重要:input() 的返回值永远是字符串
这是最容易出错的地方。即使用户输入的是数字,input() 返回的也是字符串:
age = input('请输入你的年龄:')
print(type(age)) # —— 是字符串,不是数字!
# 如果要做数学运算,必须先转换
age = int(input('请输入你的年龄:'))
print(f'明年你就{age + 1}岁了') # 正确,age 现在是整数
type() 函数用来查看变量的类型,相当于 JavaScript 的 typeof。
完整示例:一个简单的计算器
# 简单的加法计算器
print('===== 加法计算器 =====')
num1 = float(input('请输入第一个数字:'))
num2 = float(input('请输入第二个数字:'))
result = num1 + num2
print(f'{num1} + {num2} = {result}')
运行这个程序,终端会依次询问两个数字,然后输出它们的和。用 float() 而不是 int(),因为用户可能输入小数。
六、布尔值与比较运算
布尔值只有两个:True 和 False。注意首字母大写,和 JavaScript 的 true/false(全小写)不同。
比较运算符
Python 的比较运算符和 JavaScript 基本一致:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
== |
等于 | 10 == 10 |
True |
!= |
不等于 | 10 != 5 |
True |
> |
大于 | 10 > 5 |
True |
< |
小于 | 10 < 5 |
False |
>= |
大于等于 | 10 >= 10 |
True |
<= |
小于等于 | 5 <= 3 |
False |
Python 的一个特色:连续比较
# 这个在 JS 里要写成 x > 0 && x < 10
x = 5
print(0 < x < 10) # True
print(10 < x < 20) # False
逻辑运算符
Python 使用英文单词而不是符号:
| JavaScript | Python | 含义 |
|---|---|---|
&& |
and |
并且 |
|| |
or |
或者 |
! |
not |
取反 |
age = 25
has_ticket = True
# 并且:两个条件都要满足
print(age >= 18 and has_ticket) # True
# 或者:满足一个即可
print(age < 18 or has_ticket) # True
# 取反
print(not has_ticket) # False
Python 的“真值”和“假值”
和 JavaScript 类似,Python 中某些值在条件判断中会被当作 False:
False0、0.0''(空字符串)[](空列表){}(空字典)None(相当于 JS 的 null/undefined)
其他所有值都是 True。
if []:
print('空列表是真值') # 不会执行
else:
print('空列表是假值') # 会执行
None:Python 的“空”
None 是 Python 中表示“没有值”的特殊常量,相当于 JavaScript 的 null 和 undefined 的结合体。
result = None
print(result is None) # True —— 判断变量是不是 None 用 is,不要用 ==
七、print() 的进阶用法
我们已经用了很多次 print(),但它还有一些实用的参数:
# sep 参数:多个值之间的分隔符(默认是空格)
print('苹果', '香蕉', '橘子') # 苹果 香蕉 橘子
print('苹果', '香蕉', '橘子', sep=', ') # 苹果, 香蕉, 橘子
print('苹果', '香蕉', '橘子', sep='-') # 苹果-香蕉-橘子
# end 参数:末尾追加的内容(默认是换行符 \n)
print('第一行', end='')
print('还是第一行') # 两行输出在同一行
print('第一行', end='---')
print('第二行') # 输出:第一行---第二行
八、本篇动手练习
练习 1:个人信息卡片
新建 practice2-1.py,用 input() 获取用户的姓名、年龄、城市,然后用 f-string 格式化输出一张个人信息卡片。
练习 2:温度转换器
新建 practice2-2.py,编写一个摄氏温度转华氏温度的程序。公式:华氏度 = 摄氏度 × 9/5 + 32。用户输入摄氏度,输出对应的华氏度,保留一位小数。
练习 3:字符串操作练习
新建 practice2-3.py,输入一个英文句子,完成以下操作:
- 全部转为大写并输出
- 统计某个字母出现的次数
- 把句子里的某个词替换成另一个词
- 把句子分割成单词列表并输出
练习 4:计算圆的面积和周长
新建 practice2-4.py,用户输入圆的半径,输出圆的面积(π × 半径²)和周长(2 × π × 半径)。π 可以用 3.14159,或者用 import math 然后 math.pi。结果保留两位小数。
九、本篇小结
这一篇你系统学习了 Python 的基础语法:
- 变量:不需要声明关键字,命名用下划线风格。支持多重赋值和链式赋值。
- 数字类型:int(无限精度)、float(有精度问题)、complex(复数)。运算符中
//整除和**幂运算是 Python 特有的。 - 字符串:索引(支持负数)、切片(
[start:end:step])、丰富的内置方法(upper、strip、split、join等)。f-string 是最推荐的格式化方式。 input():获取用户输入,返回值永远是字符串,需要数学运算时记得转换类型。- 布尔值:
True和False(首字母大写)。比较运算符和 JS 基本一致,逻辑运算符用and、or、not。 print():sep参数控制分隔符,end参数控制结尾字符。
你现在已经能用 Python 写出和用户交互的小程序了。下一篇,我们学习条件判断和循环——if/elif/else、for 循环、while 循环,以及 Python 特有的循环控制方式。
下一篇预告
下一篇——《条件判断与循环——if、for、while》:详细讲解 Python 的分支结构和循环结构。和 JavaScript 的差异:elif 代替 else if、for...in 的使用方式、range() 函数的完整用法、while 循环和 break/continue。还有 Python 特有的 for...else 结构。
Python 零基础入门,每周更新。













暂无评论内容