本文带你从零开始:认识Python → 安装Python 3.11.7 + PyCharm → 掌握部分基础Python知识 → 最终完成一个“超市收银系统”实战项目。全文包含50+代码示例,适合零基础入门。

模块 核心内容
🔧 环境搭建 Python 3.11.7安装(Windows/macOS/Linux)+ PyCharm配置
📖 基础语法 print输出、变量命名、数据类型、type检测、强制类型转换
⌨️ 输入处理 input函数、字符串转数值、多行字符串
🚦 条件判断 if/elif/else、布尔值、and/or逻辑运算符、三元运算符
🔁 循环语句 for循环、range函数、while循环、循环嵌套、break/continue
⚠️ 异常处理 try-except、捕获多种异常、友好的错误提示
🧪 综合实战 超市收银系统(融合循环+异常+条件判断)

一、认识Python

1. Python是什么?

Python是一门解释型、面向对象的高级编程语言,由Guido van Rossum于1991年创建。它的设计哲学是:

优雅、明确、简单

2. Python的优势

根据TIOBE、GitHub、IEEE Spectrum等权威排行榜,Python已稳居编程语言使用量第一。

· 超过70%的数据科学家使用Python
· PyPI拥有超过50万个第三方库
· 连续多年被评为“最想学习的语言”

Python能够成为全球最受欢迎的编程语言,得益于以下五大优势
📖 简洁易读 :语法接近自然语言(如英语),代码可读性高,降低学习和维护成本。
📦 丰富的生态库: 拥有超过20万个第三方库(如NumPy、Django、TensorFlow),覆盖几乎所有开发场景。
💻 跨平台兼容: 支持Windows、Linux、macOS等操作系统,代码无需修改即可跨平台运行。
🆓 开源免费 完全免费,社区活跃,持续迭代更新(由Python软件基金会维护)。
🎯 多领域适用: 既能写脚本自动化小任务,也能开发大型企业级应用。

3.Python的热门趋势

🤖 大模型与AI应用
ChatGPT等大模型底层均用Python训练,LangChain成为AI应用开发标配。AI岗位年增40%+,是最热方向。

📊 数据分析与商业智能
金融、电商、医疗行业急需,Pandas+Matplotlib是数据清洗与可视化首选。

🚀 AI后端服务
FastAPI成为部署AI模型的新宠,性能高、文档自动生成。

🔧 办公自动化
Excel批量处理、文件自动整理,Python是“打工人效率神器”。

🕷️ 数据采集与爬虫
大模型时代数据即燃料,爬虫是获取训练数据的重要手段。

AI是Python最热方向,数据分析是应用最广的领域,自动化是提升效率的利器。

二、Python 3.11.7 与 PyCharm 下载与环境搭建

1. Python 3.11.7 下载与安装
  • 访问 Python 官方网站https://www.python.org/downloads/下载页面找要下载的Python版本
  • 选择适用于操作系统的安装包(Windows/macOS/Linux)
  • 运行安装程序并勾选“Add Python to PATH”选项,建议两个都勾选
  • 验证安装是否成功 开始搜索IDLE查看是否有Python 3.11 
2. PyCharm 下载与安装(社区版免费)
3. 配置 Python 解释器
  • 在 PyCharm 中创建或打开项目New Project
  • 进入 File > Settings > Project: [项目名] > Python Interpreter
  • 点击齿轮图标选择 Add Interpreter
  • 选择已安装的 Python 3.11.9 路径并确认
4. 创建与运行 Python 项目
  • 新建 Python 文件(如 main.py
  • 编写简单测试代码(如 print("Hello, Python 3.11.9")
  • 使用 PyCharm 运行功能(右键菜单或工具栏按钮)
  • 检查输出结果是否正常
5. 常见问题与解决方案

当系统中存在多个python版本时,需要切换优先级,可以通过环境变量来进行修改

三、Python基础语法

1. 输出函数 print()
print("Hello")                    # 输出字符串
print(123)                        # 输出数字
print("a", "b", "c", sep="-")     # a-b-c(修改分隔符)
print("不换行", end="")           # 不换行输出
 
2. 变量命名规则
规则正确示例错误示例
只能包含字母、数字和下划线my_namemy-name
不能以数字开头age22age
不能使用关键字nameif(if为关键字)
区分大小写Age和age不同

命名规范:变量用小写下划线分隔 student_name,常量全大写 MAX_SCORE

3. 基本数据类型
数据类型示例type()返回值
整型(int)age = 18<class 'int'>
浮点型(float)pi = 3.14<class 'float'>
字符串(str)name = "张三"<class 'str'>
布尔型(bool)is_ok = True<class 'bool'>
# 数据类型检测示例
print(type(10))      # 输出: <class 'int'>
print(type(3.14))    # 输出: <class 'float'>
 
4. 类型转换
函数功能描述示例
int()将输入转换为整数int("123") → 123
float()将输入转换为浮点数float("3.14") → 3.14
str()将输入转换为字符串str(100) → "100"
bool()将输入转换为布尔值bool(0) → False

⚠️ 常见坑:带小数的字符串不能直接转int,因为int()函数不能直接处理带小数点的字符串,需要先转换为浮点数再取整

int("3.14")  # 会抛出ValueError
# 正确方法:先转换为float再转为int
int(float("3.14"))  # 结果为3
5. 输入函数 input()

重要:input() 返回值永远是字符串类型!

# 获取用户输入的姓名并显示其类型
name = input("请输入姓名:")
print(type(name))  # 输出类型为<class 'str'>

# 年龄输入需要转换为整型才能进行数学运算
age = int(input("请输入年龄:"))  # 直接在输入时完成类型转换
print(f"明年你将年满{age + 1}岁")  # 使用f-string格式化输出
6. 多行字符串

单引号或双引号无法跨行,使用三个引号:

# 春晓
poem = """春眠不觉晓,
处处闻啼鸟。
夜来风雨声,
花落知多少。"""
print(poem)

四、程序控制语句

1. 条件判断(if/elif/else)

核心语法:条件后跟冒号 :   代码块缩进(4个空格)

"注意:Python中缩进错误会引发IndentationError"

score = 85

if score >= 90:
    print("优秀")
elif score >= 70:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

布尔值规则:

· True / False(首字母大写)
· 非零数值 → True,零 → False
· 非空字符串 → True,空字符串 → False

逻辑运算符:

age = 18
score = 95

# 使用and运算符:两个条件都必须满足
if age >= 18 and score >= 90:
    print("成年且成绩优秀")

# 使用or运算符:满足任一条件即可  
if age < 18 or score >= 90:
    print("未成年或成绩优秀")

单条件赋值场景下可替代简单if-else

status = "未成年" if age < 18 else "成年"
2. for 循环

适用场景:已知循环次数或遍历序列

# 遍历字符串中的每个字符
for char in "Python":
    print(char)

# 使用range生成指定次数的循环
for num in range(5):      # 输出0到4
    print(num)

# 使用带步长的range控制循环
for num in range(2, 9, 2):  # 输出2,4,6,8
    print(num)
 

range() 函数参数说明:

调用方式生成序列
range(5)0, 1, 2, 3, 4
range(1, 6)1, 2, 3, 4, 5
range(1, 10, 2)1, 3, 5, 7, 9
3. while 循环

适用场景:循环次数不确定

# 循环计数器初始化
count = 0

# 执行3次循环
while count < 3:
    # 打印当前循环次数
    print(f"第{count+1}次循环")
    # 计数器递增
    count += 1

注意:一定要修改循环条件,否则会死循环!

4. 循环嵌套

内层循环完整执行一次,外层循环才进入下一次迭代。

# 生成九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}×{i}={i * j}", end="\t")
    print()  # 每行结束后换行
5. break 和 continue
语句作用
break立即终止整个循环
continue跳过当前循环剩余代码,进入下一次迭代
# 使用break:当找到第一个偶数时终止循环
for i in range(1, 10):
    if i % 2 == 0:
        print(f"发现偶数{i},循环终止")
        break

# 使用continue:跳过奇数,仅输出偶数
for i in range(1, 6):
    if i % 2 != 0:
        continue
    print(i)  # 输出结果为2和4
 
6. 异常处理(try-except)

问题:当需要确保用户必须输入数字时,用户输入 abc 而不是数字,程序会抛出ValueError异常。

解决:用 try-except 捕获异常,给出明确的错误提示信息。

while True:
    try:
        user_input = int(input("请输入数字:"))
        break
    except ValueError:
        print("输入无效,请重新输入数字")
 

捕获多种异常:

try:
    numerator = int(input("请输入分子:"))
    denominator = int(input("请输入分母:"))
    result = numerator / denominator
    print(f"计算结果:{result}")
except ValueError:
    print("错误:请输入有效的整数!")
except ZeroDivisionError:
    print("错误:分母不能为零!")

五、综合实战:超市收银系统

需求分析

1. 可连续服务多位顾客
2. 输入商品单价和重量
3. 根据重量计算不同折扣:
   · ≥10kg → 8折
   · ≥5kg → 85折
   · ≥2kg → 9折
   · <2kg → 无折扣
4. 用户输入非数字时提示重试,不崩溃
5. 输入q退出系统,累计总营收

完整代码
# 一、界面初始化
print("=" * 35)
print("      欢迎使用超市收银系统")
print("=" * 35)
# 二、总营收
total_income = 0.0

# 三、整体循环业务区域(外层大循环)
while True:
    print("\n--- 新顾客 ---")

    # 四、输入商品单价及容错校验
    while True:
        price_input = input("请输入商品单价(元),输入q退出:")
        if price_input.lower() == 'q':
            print(f"\n今日总营收:{total_income:.2f}元")
            print("感谢使用,再见!")
            exit()
        try:
            price = float(price_input)
            if price <= 0:
                print("单价必须大于0!")
                continue
            break
        except ValueError:
            print("请输入有效的数字!")

    # 五、商品重量输入及容错校验
    while True:
        weight_input = input("请输入商品重量(千克):")
        try:
            weight = float(weight_input)
            if weight <= 0:
                print("重量必须大于0!")
                continue
            break
        except ValueError:
            print("请输入有效的数字!")

    # 六、阶梯折扣判断区域
    if weight >= 10:
        discount = 0.8
        discount_desc = "8折"
    elif weight >= 5:
        discount = 0.85
        discount_desc = "85折"
    elif weight >= 2:
        discount = 0.9
        discount_desc = "9折"
    else:
        discount = 1.0
        discount_desc = "无折扣"

    # 七、金额计算区域
    subtotal = price * weight * discount
    total_income += subtotal
    # 八、消费小票打印区域
    print("\n" + "-" * 35)
    print(f"单价:{price:.2f}元")
    print(f"重量:{weight:.2f}kg")
    print(f"折扣:{discount_desc}")
    print(f"本单金额:{subtotal:.2f}元")
    print(f"累计营收:{total_income:.2f}元")
    print("-" * 35)

    # 九、结束营业判断区域
    cont = input("\n是否继续服务下一位顾客?(y/n):").lower()
    if cont != 'y':
        print(f"\n今日总营收:{total_income:.2f}元")
        print("感谢使用,再见!")
        break
内容详细讲解

一、前三行是一个系统标题起到一个美化界面的作用

1. 打印35个等号,制作顶部装饰分割线,美化界面。

2. 居中打印系统标题,告知用户当前为超市收银系统。

3. 再次打印35个等号,闭合标题上下边框,界面整齐。

二、

4. 定义总营收变量,初始为浮点型0.0,用来全天累计所有订单收入。

三、这里是第一层:最外层大循环——每来一个顾客、结算一次,循环往复。

5. 开启无限循环,实现重复接待多位顾客,系统持续运行。

6. 打印换行与提示文字,标记开始接待新顾客。

四、这里是第二层:嵌套循环1——输错不让过,必须输入合法数字、正数才放行

7. 嵌套无限循环,锁定单价输入,强制保证输入合法才能下一步。 

8. 接收用户输入,提示填写商品单价,输入q可直接退出程序

9. 将输入转为小写,识别q/Q,作为程序退出入口。

10. 格式化输出当日总营收,保留两位小数,规范金额显示。(这里出现两个f)

第一个f用到一个f-string格式化字符串 把代码里面的变量,直接塞进字符串里的打印出来 f"字符串{变量名}字符串"  普通字符串,不能直接写变量,只会原样打印文字,只有加{}才会识别变量然后自动替换我们想要输出的内容

第二个f及.2f是用来强制保留两位小数 这里的f是表示浮点数float,.2表示保留两位小数

11. 打印结束礼貌提示语。

12. 强制终止并退出整个程序。exit=关机(直接结束整个程序)

13. 开启异常捕获,防止输入汉字、符号、字母导致程序崩溃。

14. 将输入的文本转为小数,用于金额计算。

15. 判断单价,禁止0或负数,符合现实售卖规则。

16. 弹出错误提示,提醒单价必须为正数。

17. 回到单价循环开头,重新输入。continue=重来一次(不跳出循环,直接回到当前这个循环的开头及嵌套循环1开头,重新再来一次)

18. 单价输入合法,跳出当前循环,进入下一步。break=跳出循环(逃出当前的循环也就是嵌套循环1,但程序继续)

五、这里是第二层:嵌套循环2——和单价一样,放错输入,保证数据合法。

19. 嵌套无限循环,专门用来严格校验重量输入。

20. 获取用户输入的商品重量内容。

21. 开启异常捕获,拦截非数字输入报错。

22. 把重量输入转为小数,用于运算。

23. 判断重量,禁止0和负数。

24. 提示重量必须输入正数。

25. 回到重量循环开头,重新填写。

26. 重量输入合法,跳出重量输入循环。

27. 捕获数字转换失败异常,处理乱输入情况。

28. 提示用户重量必须输入纯数字。

六、

29. 判断重量≥10kg,设定8折优惠。

30. 定义折扣数值0.8。

31. 记录折扣文字说明,用于小票打印。

32. 判断5kg≤重量<10kg,设定85折。

33. 定义折扣数值0.85。

34. 记录85折文字说明。

35. 判断2kg≤重量<5kg,设定9折。

36. 定义折扣数值0.9。

37. 记录9折文字说明。

38. 重量小于2kg时,进入无折扣分支。

39. 无折扣系数设为1.0,按原价结算。

40. 标注无折扣文案。

七、

41. 计算本单实付金额:单价 × 重量 × 折扣。

42. 把本次订单金额,累加进全局总营收。

八、

43. 打印分割线,分隔操作区与小票区。

44. 格式化打印商品单价,保留两位小数。

45. 格式化打印商品重量,保留两位小数。

46. 打印当前订单享受的折扣。

47. 打印本顾客最终应付金额。

48. 实时打印店铺累计总营收。

49. 打印底部分割线,结束小票展示。

九、

50. 询问操作员是否继续接待下一位顾客。

51. 统一转小写判断,输入非y则停止接单。

52. 营业结束,打印最终全天总营收。

53. 打印结束语。

54. 跳出外层大循环,程序正常结束。

运行效果展示

六、课后练习

完成以下任务(巩固知识点):

1. 猜数字游戏:程序随机生成1-100的数字,玩家输入猜测值,提示“大了/小了/猜中了”
2. 简易计算器:输入两个数字和一个运算符(+ - * /),输出结果,处理除零错误
3. 成绩等级转换器:输入分数,输出A/B/C/D/F等级,处理非数字输入

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐