Python入门练习题(2)-购物车

本文介绍了使用Python实现购物车功能的练习,包括输入薪资检查余额、选购商品、自动扣费和展示购物车及余额。环境为PyCharm,基于Python 3.7。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

购物车程序:
要求:输入薪资,判断余额是否充足,选择商品,自动扣费,加入购物车,q返回,并显示购物车及余额
环境:Pycharm,Python3.7

product=[['Iphone',8888],['Ipad',18888],['Iwatch',12000],['xiaomi8',2799]]
salary=input("Please input your salary:")
flag=1
shopping_cart=[]
while flag:
    if salary.isdigit():
        salary=int(salary)
        flag=0
    else:
        print("Salary can only be the digit!")
        salary=input("Please input your salary:")

while True
<think>嗯,用户之前问过如何从C语言过渡到C++,现在又想知道如何自学面向对象程序设计。看来他们可能已经有一定的C基础,现在想深入OOP。首先,我需要确定他们的背景,可能已经学过C,现在在学C++,但需要重点掌握面向对象的概念。 用户的问是关于自学OOP,所以需要从基础讲起,但也要结合他们之前的学习路径。可能需要强调OOP的核心概念,比如类、对象、继承、多态、封装,这些在之前的C++回答里提到过,但这里要更详细地展开。 接下来,要考虑学习路径。之前给过C++的学习阶段,现在需要把OOP部分单独拿出来,分步骤指导。可能包括理解概念、选择语言、实践项目、设计模式等等。同时,要避免重复之前的内容,比如C++的语法细节,而专注于OOP本身。 用户可能需要知道如何有效自学,所以需要提供结构化的方法,比如分阶段学习,每个阶段的目标和资源推荐。还要注意常见误区,比如滥用继承,忽略封装等,这些在之前的回答里提到过,可以再次强调。 另外,实践是关键。用户可能已经通过LeetCode和小项目练习过,所以可以推荐更复杂的项目,比如图书管理系统或游戏引擎组件,来应用OOP原则。同时,设计模式的学习也是进阶的一部分,这部分在之前的回答里提到过Effective C++和STL源码,可能需要补充更多资源,比如《Head First设计模式》。 还要考虑用户可能存在的疑问,比如如何从面向过程转换到面向对象思维,或者如何选择合适的编程语言。虽然他们之前学的是C++,但可能需要提到其他语言如Java或Python,以便更广泛地应用OOP。 最后,确保回答结构清晰,分步骤,有示例代码,常见错误和推荐资源。避免使用太多技术术语,保持易懂,同时提供具体的实践建议,比如每日编码练习和参与开源项目。</think>以下是为零基础学习者设计的面向对象程序设计(OOP)自学路径,结合认知心理学原理分阶段递进: --- ### 一、建立核心概念认知(1-2周) #### 1. 理解三大核心特性 - **封装**:数据与行为的捆绑 ```java public class BankAccount { private double balance; // 数据隐藏 public void deposit(double amount) { // 暴露行为 balance += amount; } } ``` - **继承**:`is-a`关系的代码复用 $$ \text{Animal} \xrightarrow{\text{extends}} \text{Dog} $$ - **多态**:同一接口不同实现 ```python class Shape: def area(self): pass # 抽象方法 class Circle(Shape): def area(self): return π*r&sup2; # 运行时动态绑定 ``` #### 2. 区分关键概念 - 类 vs 对象:`类=设计图,对象=具体房屋` - 抽象类 vs 接口:`抽象类=部分实现,接口=纯行为契约` --- ### 二、语言工具选择与实践(3-4周) #### 1. 推荐入门语言 | 语言 | 学习优势 | 实践项目方向 | |--------|-----------------------------|--------------------| | Java | 强OOP约束,适合打基础 | Android应用开发 | | Python | 语法简洁,快速验证设计思想 | 自动化工具开发 | | C++ | 理解底层实现机制 | 游戏引擎组件开发 | #### 2. 每日编码训练 1. 实现经典案例(每天1个): - 图书馆管理系统(继承体系) - 电商购物车(组合模式) - 图形绘制工具(多态应用) 2. 重构练习:将过程式代码改写成OOP形式 --- ### 三、设计能力进阶(5-8周) #### 1. 掌握SOLID原则 - **单一职责原则**:`一个类只做一件事` ```typescript // 错误示例 class User { saveToDatabase() { /*...*/ } sendEmail() { /*...*/ } } // 正确拆分 class User {} class UserRepository { save() {} } class EmailService { send() {} } ``` - **开闭原则**:`对扩展开放,对修改关闭` $$ \text{通过继承/组合扩展} \Rightarrow \text{而非修改源代码} $$ #### 2. 设计模式实践 - 创建型:工厂模式(解决对象创建复杂度) ```cpp class Dialog { public: static Dialog* create(string type) { if(type == "windows") return new WinDialog(); if(type == "web") return new WebDialog(); } }; ``` - 结构型:适配器模式(接口转换) - 行为型:观察者模式(事件处理) --- ### 四、常见误区与解决方案 1. **过度继承陷阱** - 错误:`Dog → Animal → LivingThing → ...`(超过3层继承) - 正确:优先使用组合`class Dog { private Animal animal; }` 2. **贫血模型反模式** - 错误:仅含getter/setter的"哑巴类" - 正确:将业务逻辑封装在对应类中 3. **多态滥用** - 错误:为10个不同实现创建独立子类 - 正确:使用策略模式`interface PaymentStrategy` --- ### 五、学习资源推荐 1. **理论奠基**: - 图解教材:《Head First设计模式》 - 经典著作:《设计模式:可复用面向对象软件的基础》 2. **实践平台**: - Refactoring Guru(交互式设计模式学习) - Codewars(OOP专项训练) 3. **项目参考**: - GitHub趋势项目:`tensorflow/models`(大型OOP架构) - 开源游戏:`Minecraft Mod开发` --- ### 六、能力检验标准 1. 初级:能正确绘制类图(UML),实现基础继承体系 2. 中级:能运用3种以上设计模式解决实际问 3. 高级:能设计符合`高内聚低耦合`原则的模块化系统 建议每天保持2小时刻意练习,重点培养**对象思维建模能力**。从模仿优秀代码开始,逐步过渡到自主设计,最终达到`看到需求→自动映射到对象关系`的思维水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值