dede旅游网站模板,推广引流渠道方法大全,移动宽带到期续费流程,网站营销学多久引言
很久没有写 Python 了#xff0c;有一点生疏。这是学习《Python 编程#xff1a;从入门到实践#xff08;第3版#xff09;》的课后练习记录#xff0c;主要目的是快速回顾基础知识。
练习1#xff1a;汽车租赁
编写一个程序#xff0c;询问用户要租什么样的汽车有一点生疏。这是学习《Python 编程从入门到实践第3版》的课后练习记录主要目的是快速回顾基础知识。
练习1汽车租赁
编写一个程序询问用户要租什么样的汽车并打印一条消息。
# 使用 input() 函数获取用户输入
car_type input(请问您想要租什么样的汽车 )# 使用 f-string 格式化输出使回复更具动态性
print(f好的我来帮您看看是否能找到一辆 {car_type.title()}。)请问您想要租什么样的汽车 Subaru
好的我来帮您看看是否能找到一辆 Subaru。知识点回顾
input() 函数这是 Python 中获取用户在终端输入的标准方式。程序会在此处暂停等待用户输入并按回车。变量存储input() 返回的是一个字符串我们将其存储在变量 car_type 中以便后续使用。f-string通过在字符串前加上字母 f可以直接在花括号 {} 中嵌入变量使字符串的拼接和格式化变得非常简洁和易读。字符串方法.title() 方法可以将用户输入的汽车品牌即使是小写以首字母大写的规范形式显示出来。
练习2餐馆订位
编写一个程序询问用户有多少人用餐。如果超过8个人就打印一条消息指出没有空桌否则指出有空桌。
# 获取用餐人数的输入
guest_count_str input(您好请问总共有多少人用餐 )# 将输入从字符串转换为整数
guest_count int(guest_count_str)# 使用 if-else 结构进行条件判断
if guest_count 8:print(非常抱歉目前没有足够大的空桌请您稍等片刻。)
else:print(好的有空桌这边请)您好请问总共有多少人用餐 9
非常抱歉目前没有足够大的空桌请您稍等片刻。知识点回顾
类型转换input() 总是返回字符串类型。要进行数值比较如大于、小于必须使用 int() 函数将其显式转换为整数。条件判断if-else 语句是编程中最基本的控制流结构用于根据条件的真假执行不同的代码块。比较运算符 (大于) 是一个比较运算符用于判断一个数是否大于另一个数返回布尔值 True 或 False。
练习3: 10的整数倍
让用户输入一个数并指出这个数是否是10的整数倍。
# 获取用户输入的数字
number_str input(请输入一个整数我将判断它是否是10的整数倍)
number int(number_str)# 使用求模运算符 % 进行判断
if number % 10 0:print(f数字 {number} 是10的整数倍。)
else:print(f数字 {number} 不是10的整数倍。)请输入一个整数我将判断它是否是10的整数倍30
数字 30 是10的整数倍。知识点回顾
求模运算符 %也叫取余运算符它返回两数相除的余数。如果一个数 n % 10 的结果是 0说明 n 可以被10整除即是10的倍数。这是判断整除性的通用方法。 运算符用于判断两个值是否相等。注意与 赋值运算符区分。
练习4比萨配料
编写一个循环提示用户输入一系列比萨配料并在用户输入’quit’时结束循环。每当用户输入一种配料后都打印一条消息指出要在比萨中添加这种配料。
# 定义一个提示信息方便复用
prompt \n请输入您想添加的比萨配料
prompt \n(输入 quit 即可完成点餐) # 使用 while True 循环直到遇到 break
while True:topping input(prompt)if topping quit:break # 当用户输入 quit 时跳出循环else:print(f好的我们会在您的比萨中添加 {topping}。)请输入您想添加的比萨配料
(输入 quit 即可完成点餐) 蘑菇
好的我们会在您的比萨中添加 蘑菇。请输入您想添加的比萨配料
(输入 quit 即可完成点餐) 培根
好的我们会在您的比萨中添加 培根。请输入您想添加的比萨配料
(输入 quit 即可完成点餐) quit知识点回顾
while 循环用于重复执行一段代码直到某个条件不再满足。无限循环与 breakwhile True: 创建了一个理论上会永远执行的循环。break 语句是控制这种循环的关键它提供了一个出口当满足特定条件用户输入’quit’时可以立即终止循环。代码简洁性将多行提示语存储在一个变量中可以让 input() 调用本身更整洁。
练习5电影票
有家电影院根据观众的年龄收取不同的票价不到3岁的观众免费3含12岁的观众收费10美元年满12岁的观众收费15美元。请编写一个循环在其中询问用户的年龄并指出其票价。
prompt 请输入您的年龄输入非数字或quit退出while True:age_input input(prompt)# 允许用户输入 quit 退出if age_input quit:break# 使用 try-except 处理无效输入例如非数字try:age int(age_input)except ValueError:print(请输入有效的年龄数字或 quit。)continue # 跳过本次循环的余下部分if age 3:price 免费elif age 12:price 10美元else:price 15美元print(f您的票价是{price}。)请输入您的年龄输入非数字或quit退出2
您的票价是免费。
请输入您的年龄输入非数字或quit退出10
您的票价是10美元。
请输入您的年龄输入非数字或quit退出25
您的票价是15美元。
请输入您的年龄输入非数字或quit退出quit知识点回顾
if-elif-else 结构当有多个互斥的条件需要判断时使用 if-elif-else 链条。Python 会从上到下依次检查每个条件一旦找到满足的就会执行对应代码块并忽略余下的所有条件。边界条件注意条件 age 3 和 age 12 的设置。因为程序会按顺序检查所以第二个条件 age 12 隐含了 age 3 的前提。try-except 错误处理 (可选但推荐)在将输入转换为整数时如果用户输入了非数字字符int() 函数会抛出 ValueError 错误导致程序崩溃。使用 try-except 可以优雅地捕获这个错误提示用户并使用 continue 语句跳过当前无效的输入继续下一次循环。
练习6三种出路
以不同的方式完成练习5在程序中采取如下做法。
在 while 循环中使用条件测试来结束循环。使用变量 active 来控制循环结束的时机。使用 break 语句在用户输入 ‘quit’ 时退出循环。已在练习5中演示
# 方法二使用 active 标志位
prompt 请输入您的年龄输入quit退出
active True # 设置一个活动标志while active:age_input input(prompt)if age_input quit:active False # 将标志位置为 False循环将在下次检查时结束else:age int(age_input)if age 3:print(您的票是免费的)elif age 12:print(您的票是10美元)else:print(您的票是15美元)请输入您的年龄输入quit退出18
您的票是15美元
请输入您的年龄输入quit退出5
您的票是10美元
请输入您的年龄输入quit退出quit知识点回顾
标志位 (Flag)使用一个布尔变量如 active来控制循环的执行状态是一种常见的编程技巧。循环的继续条件是 while active:。当需要退出时只需在循环内部将 active 设为 False循环在完成当前迭代后就会自然终止。这种方法比 while True break 在逻辑上显得更明确。
练习7无限循环
编写一个没完没了的循环并运行它。要结束该循环可按Ctrl C
# 这是一个无限循环的经典例子
while True:print(这个循环将永远运行下去按 CtrlC 可以强制停止。)这个循环将永远运行下去按 CtrlC 可以强制停止。
这个循环将永远运行下去按 CtrlC 可以强制停止。
...
Traceback (most recent call last):File main.py, line 2, in moduleprint(...)
KeyboardInterrupt知识点回顾
无限循环while True: 是最直接的无限循环。它在需要程序持续运行直到被外部干预如用户、操作系统的情况下非常有用例如服务器监听请求、游戏主循环等。KeyboardInterrupt在终端中运行 Python 程序时按下 CtrlC 会发送一个“键盘中断”信号给程序。如果程序没有特殊处理这个信号默认行为就是终止执行并抛出 KeyboardInterrupt 异常。
练习8熟食店
创建一个名为 sandwich_orders 的列表其中包含各种三明治的名字再创建一个名为 finished_sandwiches 的空列表。遍历列表制作三明治并将其移到已完成列表中。
sandwich_orders [金枪鱼三明治, 鸡肉法棍, 鸡蛋美乃滋三明治, 素食三明治]
finished_sandwiches []# 当 sandwich_orders 列表不为空时循环继续
while sandwich_orders:# 使用 .pop() 取出订单列表中的最后一个三明治current_sandwich sandwich_orders.pop()print(f我做好了您的 {current_sandwich}。)# 使用 .append() 将做好的三明治添加到已完成列表finished_sandwiches.append(current_sandwich)print(\n--- 所有三明治都做好了 ---)
for sandwich in finished_sandwiches:print(sandwich)我做好了您的 素食三明治。
我做好了您的 鸡蛋美乃滋三明治。
我做好了您的 鸡肉法棍。
我做好了您的 金枪鱼三明治。--- 所有三明治都做好了 ---
素食三明治
鸡蛋美乃滋三明治
鸡肉法棍
金枪鱼三明治知识点回顾
将列表用作循环条件while sandwich_orders: 是一个非常 Pythonic 的写法。当列表 sandwich_orders 中有元素时它在布尔上下文中被视为 True当列表变为空时它被视为 False循环自动结束。list.pop() 方法从列表中移除并返回一个元素默认是最后一个。这是“处理并移除”任务的理想选择。list.append() 方法将一个元素添加到列表的末尾。移动元素这个练习完美演示了在两个列表之间移动元素的标准模式从一个列表中 pop然后 append 到另一个列表中。
练习9五香烟熏牛肉卖完了
使用练习8的列表确保 pastrami 在其中至少出现了三次。在程序开头打印消息指出 pastrami 卖完了然后使用 while 循环将列表中的 pastrami 全部删除。
sandwich_orders [pastrami, 金枪鱼三明治, pastrami, 鸡肉法棍, 鸡蛋美乃滋三明治, pastrami, 素食三明治
]
finished_sandwiches []print(抱歉我们的五香烟熏牛肉pastrami今天卖完了。)# 使用 while 循环删除所有的 pastrami
while pastrami in sandwich_orders:sandwich_orders.remove(pastrami)print(\n正在处理剩余订单...)
while sandwich_orders:current_sandwich sandwich_orders.pop()print(f我做好了您的 {current_sandwich}。)finished_sandwiches.append(current_sandwich)print(\n--- 所有三明治都做好了 ---)
print(finished_sandwiches)
抱歉我们的五香烟熏牛肉pastrami今天卖完了。正在处理剩余订单...
我做好了您的 素食三明治。
我做好了您的 鸡蛋美乃滋三明治。
我做好了您的 鸡肉法棍。
我做好了您的 金枪鱼三明治。--- 所有三明治都做好了 ---
[素食三明治, 鸡蛋美乃滋三明治, 鸡肉法棍, 金枪鱼三明治]知识点回顾
in 关键字用于检查列表中是否包含某个特定元素。pastrami in sandwich_orders 会返回 True 或 False。list.remove() 方法从列表中删除第一个匹配的元素。while 循环删除所有匹配项如果需要删除列表中所有出现的某个特定值while value in list: 配合 list.remove(value) 是一个简洁有效的方法。如果使用 for 循环并在循环中删除元素会因为列表长度动态改变而导致意外行为所以 while 循环是更安全的选择。
练习10梦想中的度假胜地
编写一个程序调查用户梦想中的度假胜地。使用提示并编写一个打印调查结果的代码块。
# 创建一个空字典来存储调查结果
responses {}# 设置一个标志来控制循环是否继续
polling_active Truewhile polling_active:# 收集姓名和回答name input(\n您好您叫什么名字 )place input(如果您能去世界上的任何一个地方您会去哪里 )# 将回答存储在字典中responses[name] place# 询问是否还有其他人要参与调查repeat input(还有其他人要参与调查吗 (yes/no) )if repeat no:polling_active False# 调查结束打印结果
print(\n--- 调查结果 ---)
for name, place in responses.items():print(f{name.title()} 梦想的度假胜地是 {place.title()}。)您好您叫什么名字 张三
如果您能去世界上的任何一个地方您会去哪里 冰岛还有其他人要参与调查吗 (yes/no) yes您好您叫什么名字 李四
如果您能去世界上的任何一个地方您会去哪里 马尔代夫还有其他人要参与调查吗 (yes/no) no--- 调查结果 ---
张三 梦想的度假胜地是 冰岛。
李四 梦想的度假胜地是 马尔代夫。知识点回顾
动态填充字典程序开始于一个空字典 responses在循环中根据用户的输入动态地添加键值对。responses[name] place 这行代码完成了赋值。结合 while 循环和字典这个练习展示了如何使用循环来收集信息并用字典这种强大的数据结构来组织和存储这些信息。dict.items() 方法在最后的 for 循环中.items() 方法被用来同时遍历字典的键name和值place这使得打印格式化的结果非常方便。