从零开始学Python(三):数据类型与变量

从零开始学Python(三):数据类型与变量

本系列教程将带你从零开始学习Python编程,无需任何编程基础。

数学运算

Python可以像计算器一样进行各种数学运算。

基本运算符

加法5 + 3结果为8,减法10 - 4结果为6,乘法6 * 7结果为42,除法15 / 3结果为5.0(除法总是返回浮点数),整除17 // 5结果为3(整除,去掉小数部分),取余17 % 5结果为2(取余数),幂运算2 ** 3结果为8(2的3次方)。

运算优先级

和数学一样,Python运算也有优先级。括号()优先级最高,幂运算**次之,然后是乘、除、整除、取余*///%,最后是加、减+-

1
2
3
print(2 + 3 * 4)     # 14(先乘后加)
print((2 + 3) * 4) # 20(先算括号)
print(2 ** 3 * 4) # 32(先幂算,再乘法)

数学函数

Python内置了一些数学函数。abs(-10)返回绝对值10。round(3.7)四舍五入为4,round(3.2)为3,round(3.14159, 2)保留2位小数为3.14。max(1, 5, 3)返回最大值5,min(1, 5, 3)返回最小值1。

字符串操作

字符串是文本数据,Python提供了丰富的字符串操作方法。

字符串拼接

使用+拼接字符串:

1
2
3
4
first_name = "张"
last_name = "三"
full_name = first_name + last_name
print(full_name) # 张三

使用*重复字符串:

1
2
echo = "你好" * 3
print(echo) # 你好你好你好

字符串长度

使用len()函数获取字符串长度:

1
2
text = "Hello, Python!"
print(len(text)) # 14(包含空格和标点)

字符串索引

字符串中的每个字符都有一个位置(索引),从0开始:

1
2
3
4
word = "Python"
print(word[0]) # P(第一个字符)
print(word[1]) # y
print(word[-1]) # n(最后一个字符)

字符串切片

使用切片获取字符串的一部分:

1
2
3
4
5
6
word = "Python"
print(word[0:2]) # Py(从索引0到2,不包括2)
print(word[2:5]) # tho
print(word[:3]) # Pyt(从开始到索引3)
print(word[3:]) # hon(从索引3到结束)
print(word[::2]) # Pto(每隔一个字符)

字符串方法

Python提供了很多字符串方法。

text.upper()转换为大写”HELLO, WORLD!”,text.lower()转换为小写”hello, world!”,text.title()转换为首字母大写”Hello, World!”。

text.strip()去除两端空格。

text.find("World")查找”World”的起始位置7,text.replace("World", "Python")替换为”Hello, Python!”。

text.split(",")分割字符串为列表['apple', 'banana', 'orange']

字符串格式化

字符串格式化让我们可以在字符串中插入变量。

使用f-string(推荐,Python 3.6+):

1
2
3
4
5
6
7
8
name = "张三"
age = 25
print(f"我叫{name},今年{age}岁")
# 输出:我叫张三,今年25岁

# 可以进行运算
print(f"明年我{age + 1}岁")
# 输出:明年我26岁

使用format():

1
2
3
4
name = "张三"
age = 25
print("我叫{},今年{}岁".format(name, age))
# 输出:我叫张三,今年25岁

使用%(旧式):

1
2
3
4
name = "张三"
age = 25
print("我叫%s,今年%d岁" % (name, age))
# 输出:我叫张三,今年25岁

布尔值和逻辑运算

布尔值只有两个:True(真)和False(假)。

比较运算符

==等于(5 == 5为True),!=不等于(5 != 3为True),>大于(5 > 3为True),<小于(3 < 5为True),>=大于等于(5 >= 5为True),<=小于等于(3 <= 5为True)。

逻辑运算符

and与:两个都为True才为True。or或:有一个为True就为True。not非:取反。

实际应用

1
2
3
4
5
6
7
8
age = 20
has_ticket = True

# 判断是否可以进入电影院
if age >= 18 and has_ticket:
print("可以进入")
else:
print("不能进入")

实战示例:简易计算器

让我们用所学知识创建一个简单的计算器程序。

完整代码

创建文件calculator.py

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
31
32
33
34
35
36
37
# 简易计算器

print("=" * 35)
print(" 简易计算器")
print("=" * 35)
print()

# 获取用户输入
num1 = float(input("请输入第一个数字:"))
operator = input("请输入运算符(+、-、*、/):")
num2 = float(input("请输入第二个数字:"))

# 进行计算
result = 0
if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 != 0:
result = num1 / num2
else:
print("错误:除数不能为0!")
exit()
else:
print("错误:不支持的运算符!")
exit()

# 显示结果
print()
print("=" * 35)
print("计算结果")
print("=" * 35)
print(f"{num1} {operator} {num2} = {result}")
print("=" * 35)

常见错误

错误1:字符串和数字直接拼接

1
2
age = 25
print("我的年龄是:" + age) # TypeError

正确做法:

1
2
3
4
age = 25
print("我的年龄是:" + str(age)) # 转换为字符串
# 或使用 f-string
print(f"我的年龄是:{age}")

错误2:索引越界

1
2
word = "Python"
print(word[10]) # IndexError:字符串只有6个字符

正确做法:

1
2
word = "Python"
print(word[5]) # n(最后一个字符的索引是5)

错误3:混淆赋值和比较

1
2
if age = 25:  # SyntaxError:应该是 ==
print("年龄是25")

正确做法:

1
2
if age == 25:  # 使用 == 进行比较
print("年龄是25")

错误4:除以零

1
result = 10 / 0  # ZeroDivisionError

正确做法:

1
2
3
4
5
divisor = 0
if divisor != 0:
result = 10 / divisor
else:
print("除数不能为0")

系列导航