python模拟砍价源码详解

以下是一个简单的Python程序,模拟砍价的过程。这个程序假设原始价格是100元,每次砍价砍掉价格的10%:

class Item:def __init__(self, original_price):self.original_price = original_priceself.current_price = original_pricedef bargain(self, discount):self.current_price -= self.current_price * discountreturn self.current_pricedef砍价(item, 砍价幅度):new_price = item.bargain(砍价幅度/100)print(f"原价为{item.original_price}元的商品,经过砍价后,新的价格为{new_price}元。")if __name__ == "__main__":item = Item(100)砍价幅度 = 10 # 例如,砍掉10%的价格砍价(item, 砍价幅度)

在这个程序中,我们首先定义了一个类Item,这个类有一个属性original_price(原始价格)和一个属性current_price(当前价格)。然后我们定义了一个方法bargain,这个方法接受一个折扣参数,并返回一个新的当前价格。然后我们定义了一个函数砍价,这个函数接受一个Item对象和一个砍价幅度,然后打印出新的价格。在主程序中,我们创建了一个新的Item对象,并给出了一个砍价幅度,然后调用了砍价函数。

以下是对上述代码的继续:

# 模拟砍价过程
print(f"开始砍价...")
while item.current_price > 0:print(f"砍价{砍价幅度}%: {item.current_price}元")item.bargain(砍价幅度)

在这个部分,我们模拟了一个连续的砍价过程。每次砍价,我们都会打印出现有的价格,然后对商品进行砍价,直到商品的价格降为0。这个循环将会持续进行,直到商品的价格降为0或者更低。

以下是对上述代码的继续:

print(f"砍价结束,最终价格为{item.current_price}元。")
if item.current_price < 0:print(f"砍价太狠了,商品已经免费了!")
else:print(f"恭喜你,砍价成功!你节省了{abs(item.original_price - item.current_price)}元!")

在这个部分,我们首先打印出砍价结束后的最终价格。然后,我们检查最终价格是否小于0,如果是,那么我们打印出一条消息,表示砍价太狠了,商品已经免费了。否则,我们计算出砍价节省的金额,并打印出一条消息,表示砍价成功。

以下是对上述代码的继续:

# 模拟砍价竞赛
print(f"现在我们来模拟一个砍价竞赛。每个参赛者都有5次砍价机会,每次砍价幅度不能超过10%。")
num_contestants = 5 # 参赛者数量
bargain_attempts = 5 # 每个参赛者的砍价次数
print(f"有{num_contestants}位参赛者参与,每人有{bargain_attempts}次砍价机会。")# 初始化参赛者的名字和初始价格
contestants = []
for i in range(num_contestants):contestants.append(f"参赛者{i+1},初始价格100元")# 记录每个参赛者的当前价格和砍价次数
current_prices = [100 for _ in range(num_contestants)]
bargain_counts = [0 for _ in range(num_contestants)]# 进行砍价竞赛
for j in range(bargain_attempts):for i in range(num_contestants):if current_prices[i] > 0:# 选择砍价幅度discount = random.uniform(0, 1) * 10# 砍价current_prices[i] = current_prices[i] * (1 - discount/100)bargain_counts[i] += 1print(f"第{j+1}次砍价后,{contestants[i]}的价格变为{current_prices[i]}元。")else:print(f"{contestants[i]}的价格已经为0,不能再砍价。")# 评估砍价竞赛结果
print(f"\n砍价竞赛结束,以下是每位参赛者的最终价格和砍价次数:")
for i in range(num_contestants):print(f"{contestants[i]}:最终价格{current_prices[i]}元,砍价次数{bargain_counts[i]}次。")

这个部分模拟了一个砍价竞赛,有多个参赛者参与,每个参赛者都有固定次数的砍价机会。每次砍价,参赛者可以选择一个砍价幅度(在这个例子中,我们假设每个参赛者随机选择一个介于0到10%之间的砍价幅度),然后对商品进行砍价。这个程序会记录每个参赛者的当前价格和砍价次数,并在砍价结束后打印出每个参赛者的最终价格和砍价次数。

以下是对上述代码的继续:

# 评选出最佳砍价王
best_bargainer = min(bargain_counts, key=bargain_counts.get)
print(f"\n经过评选,{best_bargainer}成为最佳砍价王!他/她成功砍价{bargain_counts[best_bargainer]}次,最终节省了{abs(item.original_price - current_prices[best_bargainer])}元!")

在这个部分,我们首先找出砍价次数最多的参赛者,然后打印出一条消息,宣布他/她是最佳砍价王。我们还会计算出他/她最终节省的金额,并打印出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0时区格林威治时间转换手机当地时间-Android

假设传入的是2023-11-01T12:59:10.420987这样的格式 要将格式为2023-11-01T12:59:10.420987的UTC时间字符串转换为Android设备本地时间&#xff0c;您可以使用java.time包中的类&#xff08;在API 26及以上版本中可用&#xff09;。如果您的应用需要支持较低版本的Android&…

docker通过挂载conf文件启动redis

初衷&#xff1a;之前直接在启动脚本中没有挂载配置文件&#xff0c;并且直接设置了密码等&#xff0c;后续要使用集群&#xff0c;苦于无法修改配置&#xff0c;进入redis容器也找不到redis.conf&#xff0c;所以写这个文章用来使用redis的配置&#xff0c;来达到后续都可动态…

pdf转png工具类

pdf转图片的工具类 1、需要引入的包 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.4</version></dependency> 2、工具类 public static void main(String[] args) {Stri…

华为OD南京研究所二面手撕代码实录:乘电梯的最短时间

乘电梯的最短时间 某公司,每天早上都有很多人去坐电梯,每个人都可能到不同的楼层.同时电梯还有一个容量限制.电梯最多只能带K个人.电梯从第a层到第b层,会花费|a-b|的时间. 现在有N个人,以及知道每个人想要去的地方,请问如何坐电梯,才能使每个人到达到他们对应的楼层,且所花费时…

《微信小程序开发从入门到实战》学习二十四

3.3.12开发创建投票多选投票页面 创建投票多选投票页面和创建单选投票页面没有区别&#xff0c;唯一区别仅在于向服务端发送数据时&#xff0c;告诉服务器这个投票是什么类型的投票。这个类型用三种数据类型表示都可以&#xff0c;分别如下所示&#xff1a; multiple:true/fa…

Json数据格式

json比较可读&#xff0c;通过键值对返回。实现通常有两种方式:一种是自己来构造&#xff0c;也就是用一个对象存储数据&#xff0c;在最后输出时将其json字符串化&#xff1b;第二种是使用 RestController 注解实现json数据返回。 第一种 导入依赖坐标&#xff1a; <depe…

阿里 OSS鉴权访问文件

如果OSS文件设置保护&#xff0c;需要鉴权才能访问&#xff0c;添加请求头鉴权&#xff0c;SDK方法如上&#xff1b; 将鉴权信息和地址、时间返回给前端&#xff0c;前端直接从oss上读取 String filePath "/admin/2023/6/183569314928918546.png"; RequestMessage…

【C++上层应用】6. 信号 / 中断

文章目录 【 1. signal 函数 】【 2. raise函数 】 信号是由操作系统传给进程的 中断&#xff0c;会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上&#xff0c;可以通过按 CtrlC 产生中断。有些信号不能被程序捕获&#xff0c;但是下表所列信号可以在程序中捕…

Git——感谢尚硅谷官方文档

Git——尚硅谷学习笔记 第1章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心 第2章 Git 安装第 3 章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.4 添加暂存区3.4.1 将工作区的文…

sklearn模型中预测值的R2_score为负数

目录 正文评论区参考链接 正文 Sklearn.metrics下面的r2_score函数用于计算R&#xff08;确定系数&#xff1a;coefficient of determination&#xff09;。它用来度量未来的样本是否可能通过模型被很好地预测。 分值为 1 表示最好&#xff0c;但我们在使用过程中&#xff0c…

媒体格式转换软件Permute 3 mac中文版软件特点

Permute mac是一款媒体格式转换软件&#xff0c;可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式&#xff0c;并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式&#xff1a;支持几乎所有常见的音频、视频和图像格式&#xff…

Redis事务+秒杀案例

Redis事务是一个单独的隔离操作&#xff0c;是指将多条命令放在一个命令队列当中&#xff0c;按顺序执行&#xff0c;保证多个命令在同一个事务中执行而不受其他客户端的影响。 通俗来说就是&#xff1a;串联多个命令防止别的命令插队。 1.Multi、Exec、discard 在输入Multi命…

大数据Doris(二十七):Routine Load数据导入演示

文章目录 Routine Load数据导入演示 一、启动kafka集群(三台节点都启动) 二、创建topic

[SWPUCTF 2021 新生赛]非常简单的逻辑题 // %的逆向

代码解密题 flag xxxxxxxxxxxxxxxxxxxxx s wesyvbniazxchjko1973652048$-&*<> result for i in range(len(flag)):s1 ord(flag[i])//17s2 ord(flag[i])%17result s[(s1i)%34]s[-(s2i1)%34] print(result) # result v0b9n1nkajzj0c4jjo3oi1h1i937b395i5y5e0e…

R语言——taxize(第四部分)

taxize&#xff08;第四部分&#xff09; 3.39. get_wiki&#xff08;获取维基分类群的页面名称&#xff09;3.40. get_wormsid&#xff08;获取分类群名称的Worms ID&#xff09;3.41. gni_details&#xff08;使用Global Names Index搜索分类学名称详情&#xff09;3.42. gni…

2024电脑录屏软件排行第一Camtasia喀秋莎

真的要被录屏软件给搞疯了&#xff0c;本来公司说要给新人做个培训视频&#xff0c;想着把视频录屏一下&#xff0c;然后简单的剪辑一下就可以了。可谁知道录屏软件坑这么多&#xff0c;弄来弄去头都秃了&#xff0c;不过在头秃了几天之后&#xff0c;终于让我发现了一个值得“…

Java查询多条数据放入word模板 多个word文件处理成zip压缩包并在前端下载.zip文件

需求&#xff1a;Java查询多条数据放入word模板 多个word文件处理成zip压缩包并在前端下载.zip文件 解决方法&#xff1a;在模板的位置定义参数如 {{name}} {{age}}等等&#xff0c;使用 poi 处理 伪代码&#xff1a; PostMapping("/exportPracticeAppr")public S…

微信小程序面试题【100道】

文章目录 小程序面试题100问前言一、技术性问题1.有哪些参数传值的方法2.小程序修改数据值与Vue和React有什么差异3.如何实现下拉刷新与上拉加载4.bindtap和catchtap的区别是什么5.小程序有哪些导航API&#xff0c;它们各自的应用场景与差异区别是什么6.小程序中如何使用第三方…

城市易涝点怎么安装万宾科技内涝积水监测仪?

城市内涝是多个城市广泛存在的问题&#xff0c;经常给城市的居民和基础设施带来一些安全威胁。暴雨引发的道路积水和交通中断、财产损失&#xff0c;甚至公共安全威胁都是城市管理者需要提前预防的问题。为了解决这些问题&#xff0c;内涝积水监测仪的应用是一大重要的举措&…

CSDN流量卷领取和使用保姆级教程——流量卷,恭喜获得每日任务奖励【1500曝光】可获得新增曝光,阅读转化,点赞转化,新增关注-流量卷,流量卷,流量卷

希望本文能够给您带来一定的帮助&#xff0c;文章粗浅&#xff0c;敬请批评指正&#xff01; 目录 话不多说&#xff0c;直接上干货&#xff1a; 第一步&#xff1a;流量卷领取教程&#xff1a;点击内容管理&#xff1a;​编辑 第二步&#xff1a;点击首页&#xff1a;​编辑…