Python入门教程丨2.1 了解基本数据类型、变量、交互,写一个简单的BMI计算器!

212 阅读10分钟

1. 什么是变量?

顾名思义,变量就是一个可以变化的量,就像数学里的 ( x ) 是一个未知数,给定不同的 x,方程 f(x)就可以得到不同的值,在 Python 中,变量不仅可以表示数字,还可以是:数字、文字、逻辑值、列表等。

1.1 变量的命名规则
  • 只能包含字母、数字和下划线,不能以数字开头。
    ✅ 正确:my_name, age_2025
    ❌ 错误:2name, my-var
  • 避免使用保留字(如 if, for, print 等)。
  • 尽量见名知意 让变量名反映其用途,如用gender表示性别。

以下是 Python 一些常见的保留字,是 Python 中定义的用来实现特殊功能的关键字,不能作为变量名使用。

保留字作用保留字作用保留字作用
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 常量

变量是可以变化的,但有些东西需要保持固定,比如数学中的 π,也就是一个常量。
Python 中没有专门用来表示常量的关键字,不过我们一般用全大写来表示“常量”,虽然技术上仍能改,但程序员约定俗成地不去更改它。

PI = 3.14159  # 常量
1.3 全局变量

在 Python 中,全局变量是在函数外部定义的变量。只要遵循一定的规则,它可以在整个程序的任何地方被访问。其作用域是整个程序,从定义的位置开始,到程序结束。

即便函数内部没有定义变量,也可以直接访问全局变量。例如

my_ip = "127.0.0.1"  # 定义一个全局变量

def function():
    print(my_ip)  # 在函数内部访问全局变量

function()

如果想要修改全局变量,则需要使用关键词global,有些像 C 语言中的指针,修改某地址的值。

my_ip = "127.0.0.1"  # 定义一个全局变量

def function():
    global my_ip  # 通过global关键字声明要修改全局变量
    my_ip = "192.168.0.1"  # 修改全局变量的值
    print(my_ip)  # 打印修改后的值,此时会输出新值 "192.168.0.1"

function()
print(my_ip)  # 在函数外再次打印全局变量,也会输出 "192.168.0.1",说明全局变量确实被修改了

假如没有正确声明,则只是修改了局部变量

my_ip = "127.0.0.1"  # 定义一个全局变量

def function():
    my_ip = "10.0.0.1"  # 这里实际是新定义了一个局部变量,和外面的全局变量不是同一个
    print(my_ip)  # 输出这个局部变量的值 "10.0.0.1"

function()
print(my_ip)  # 输出全局变量的值,仍然是 "127.0.0.1",因为函数内部并没有修改到全局变量

这里不太懂也没关系,后面函数部分还会具体介绍📒


2. 数据类型:变量的种类

在 Python 中,每个变量都属于某种类型,常见的基本数据类型如下:

数据类型描述示例
整数(int)没有小数点的数字x = 42
浮点数(float)带小数点的数字y = 3.14
字符串(str)一串文字或字符,用引号括起来name = "Python"
布尔值(bool)只有 True 或 Falseis_fun = True
列表(list)有序的可变元素集合fruits = ["apple", "banana"]
字典(dict)键值对的集合,像真实字典info = {"name": "Tom", "age": 10}
元组(tuple)有序的不可变元素集合coords = (10, 20)
集合(set)无序、唯一的元素集合numbers = {1, 2, 3}

我们先从简单的开始了解:

2.1 整数(int)

整数是没有小数点的数字,用于表示计数或序号。

x = 10  # 这是一个整数
y = -5  # 负数也是整数
z = 0   # 零也是整数
2.2 浮点数(float)

浮点数是带小数点的数字,常用于表示精确值(如测量值、货币金额)。

pi = 3.14159  # 圆周率
price = 9.15 # 商品价格
2.3 字符串(str)

字符串是由一对引号括起来的文字内容,可以是单引号 ' ' 或双引号 " "

name = "凌小添"      # 使用双引号
greeting = 'Hello!' # 使用单引号
2.4 布尔值(bool)

布尔值只有两个取值:TrueFalse,常用于逻辑判断。

is_raining = True
is_sunny = False

细心的小伙伴会发现,这里我们并没有特别的去指定变量的类别,

这是因为Python 是 动态类型语言,不需要在声明变量时指定类型,系统会根据赋值内容自动推断类型:

x = 10         # 整数
y = "Hello"    # 字符串
z = 3.14       # 浮点数

假如我们使用的是 C 语言等强类型语言,则必须声明类型

#include <stdio.h>

int x = 10; // 定义整数
char y[] = "Hello"; // 定义字符数组
double z = 3.14; // 定义浮点数

从语法来说,显然 Python 更加简洁,但对于初学者来说,也必须注意对不同数据类型的操作

示例:容易犯错的情况

1)不同类型的数据相加

x = 10
x = "10"
print(x + 5)  # 报错:无法将 str 和 int 相加

解决方法:将字符串类型转换为整数:

x = "10"
print(int(x) + 5)  # 输出 15

2) 没有定义变量就进行操作

print(z)  # 报错:变量 z 未定义

解决方法:先对 z 初始化,z = 0


3. 数据类型的常见操作

3.1 整数和浮点数的运算

Python 支持常见的数学运算:

x = 10
y = 3

# 加法
print(x + y)  # 输出 13

# 减法
print(x - y)  # 输出 7

# 乘法
print(x * y)  # 输出 30

# 除法(结果总是浮点数)
print(x / y)  # 输出 3.3333333333333335

# 取整
print(x // y)  # 输出 3

# 取余数(模运算)
print(x % y)  # 输出 1

# 幂运算,x的y次方
print(x ** y)  # 输出 1000
3.2 字符串的常见操作

字符串可以拼接、重复和操作:

name = "凌小添"
greeting = "Hello"

# 拼接
message = greeting + ", " + name + "!"
print(message)  # 输出 Hello, 凌小添!

# 字符串乘法
echo = name * 3
print(echo)  # 输出 凌小添凌小添凌小添
3.3 布尔值与逻辑运算

布尔值常用于条件判断,在开发中也可以用 10来表示真和假。

is_raining = True
is_sunny = False

# 逻辑与
print(is_raining and is_sunny)  # 输出 False

# 逻辑或
print(is_raining or is_sunny)  # 输出 True

# 逻辑非
print(not is_raining)  # 输出 False

4. 输入和输出

在编程中,输入(Input)输出(Output) 是与用户交互的关键环节。

Python 提供了简单且灵活的输入输出方法,下面我们用几个例子来说明。


例4.1 求两数之和
# 输入两个数字并计算它们的和
num1 = input("请输入第一个数字:")  # 输入的内容是字符串
num2 = input("请输入第二个数字:")

# 类型转换,将字符串转换为整数
num1 = int(num1)
num2 = int(num2)

# 计算和并输出
result = num1 + num2
print(f"两个数字的和是:{result}")

**print**可以实现将结果打印在窗口中

**input()** 可以接收用户输入,但默认输入的是字符串,需要用 **int()****float()** 转换为数字。


例4.2 单位转化

我们再来看一个例子,将丈和尺化为米。

# 输入长度(丈和尺)
zhang = float(input("请输入长度(单位:丈):"))
chi = float(input("请输入长度(单位:尺):"))

# 计算总长度(米)
total_meters = zhang * 3.333 + chi * 0.333

# 输出结果
print("\n----- 长度转换结果 -----")
print(f"{zhang:.2f} 丈 和 {chi:.2f} 尺 等于 {total_meters:.2f} 米")

**注:**格式化输出{miles:.2f} 表示保留两位小数。


例4.3 购物计算器
# 输入商品信息
item_name = input("请输入商品名称:")
price = float(input(f"请输入 {item_name} 的单价(元):"))
quantity = int(input(f"请输入购买的数量:"))
discount = float(input("请输入折扣(例如,九折输入0.9):"))

# 计算总价
total_price = price * quantity * discount

# 输出结果
print("\n----- 购物小票 -----")
print(f"商品名称:{item_name}")
print(f"单价:{price:.2f} 元")
print(f"数量:{quantity}")
print(f"折扣:{discount * 100:.0f}%")
print(f"总价:{total_price:.2f} 元")
print("-------------------")

5. 来写点代码试试!

本节课我们学习了 Python 中的变量、常见数据类型、类型转换、变量操作以及输入输出,下面我们通过一个小项目来复习一下,可以先动手尝试实现。


个人健康管理系统详细要求:

  • 通过 input() 获取用户的基本信息,包括姓名、性别、年龄、身高(厘米)和体重(公斤)。

  • 注意将用户输入的数字转换为 intfloat 类型以便后续计算。

  • BMI=体重(kg)/身高(m)^2

  • 身高需要从厘米转换为米,因此用 height_cm / 100

  • 使用条件语句 if-elif-else 对 BMI 的值进行区间判断:

  • BMI < 18.5:偏瘦

  • 18.5 ≤ BMI < 24.9:正常

  • 25 ≤ BMI < 29.9:超重

  • BMI ≥ 30:肥胖

  • 结合性别和年龄,给出更贴合个人的健康建议,例如女性需注意补钙,男性需关注心血管健康。

  • 使用格式化字符串(如 f"{bmi:.2f}")确保输出的数据格式美观且精确。


如果你已经完成了这个例子,和下面的例子对照对照,看看结果吧~

例 5.1 通过身高体重计算 BMI 评估健康情况
# 个人健康管理系统
print("欢迎来到个人健康管理系统!💪")

# 输入个人基本信息
name = input("请输入您的名字:")
gender = input("请输入您的性别(男/女):")
age = int(input("请输入您的年龄(单位:岁):"))
height_cm = float(input("请输入您的身高(单位:厘米):"))
weight_kg = float(input("请输入您的体重(单位:公斤):"))

# 将身高从厘米转换为米
height_m = height_cm / 100

# 计算BMI
bmi = weight_kg / (height_m ** 2)

# 输出基本信息和BMI
print("\n----- 个人健康信息 -----")
print(f"姓名:{name}")
print(f"性别:{gender}")
print(f"年龄:{age} 岁")
print(f"身高:{height_cm:.1f} 厘米")
print(f"体重:{weight_kg:.1f} 公斤")
print(f"BMI 指数:{bmi:.2f}")

# 根据BMI判断健康状况
if bmi < 18.5:
    bmi_status = "偏瘦"
    advice = "多吃一些高蛋白和高热量食物,注意加强营养。"
elif 18.5 <= bmi < 24.9:
    bmi_status = "正常"
    advice = "体重正常,继续保持健康饮食和适量运动!"
elif 25 <= bmi < 29.9:
    bmi_status = "超重"
    advice = "体重略超标,建议减少高热量食物,增加运动。"
else:
    bmi_status = "肥胖"
    advice = "体重过高,请注意饮食控制,并养成锻炼习惯。"

# 根据性别和年龄补充建议
if gender == "女" and age > 50:
    extra_advice = "建议注意骨密度,适当补钙。"
elif gender == "男" and age > 50:
    extra_advice = "建议定期监测血压和心脏健康。"
else:
    extra_advice = "保持良好的生活习惯,定期体检。"

# 输出健康评估和建议
print("\n----- 健康评估 -----")
print(f"BMI 状态:{bmi_status}")
print(f"建议:{advice}")
print(f"额外建议:{extra_advice}")


“纸上学来终觉浅,绝知此事要躬行。”

编程的核心不是听懂了多少理论,而是能不能写出代码并让它运行!

编程的实践性非常强,只有置身事内,才能真正体会编程的乐趣。

别害怕犯错,错误是最好的老师。