鱼C论坛

 找回密码
 立即注册
查看: 1696|回复: 19

[已解决]求帮忙编写程序

[复制链接]
发表于 2023-6-20 20:01:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
轨道交通价格调整为:6公⾥(含)内3元;6公⾥⾄12公⾥(含)4元;12公⾥⾄22公⾥(含)5元;22公⾥⾄32公⾥(含)6
元;32公⾥以上部分,每增加1元可乘坐20公⾥。使⽤市政交通⼀卡通刷卡乘坐轨道交通,每⾃然⽉内每张卡⽀出累计满
100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;⽀出累计达到400元以后的乘次,不再
享受打折优惠。
+ 要求:
假设每个⽉,⼩明都需要上20天班,使用市政交通⼀卡通刷卡乘坐轨道交通,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;编写程序,帮⼩明完
成每⽉乘坐地铁需要的总费⽤
已经写出了部分代码,还有打折及400元以后的乘次需要的地铁总费用代码部分不会写。
s = input("请输入小明每次乘坐地铁的单程距离:")
s = eval(s)
if s<=6:
    sum=3
elif s>6 and s<=12:
    sum=4
elif s>12 and s<=22:
    sum=5
elif s>22 and s<=32:
    sum=6
else:
    sum=6+ceil((s-32)/20)
print('小明每次每次乘坐地铁的单程费用为%s' %sum)
最佳答案
2023-6-20 20:04:46
你已经很好地处理了基本的票价计算。接下来,我将帮你完成剩余的打折和400元后的计算部分。注意这段代码假设所有的工作日在同一个月内,并且不跨月。

以下是完整的代码:
import math

# 获取用户输入
s = input("请输入小明每次乘坐地铁的单程距离:")
s = eval(s)

# 计算单次乘车费用
if s <= 6:
    fee = 3
elif s > 6 and s <= 12:
    fee = 4
elif s > 12 and s <= 22:
    fee = 5
elif s > 22 and s <= 32:
    fee = 6
else:
    fee = 6 + math.ceil((s-32)/20)

# 计算一个月的工作日总乘车次数(上下班各算一次)
times_per_month = 20 * 2

# 计算一个月的总费用
total_fee = 0
discounted_fee = 0
for i in range(times_per_month):
    if total_fee < 100:
        discounted_fee = fee
    elif total_fee >= 100 and total_fee < 150:
        discounted_fee = fee * 0.8
    elif total_fee >= 150 and total_fee < 400:
        discounted_fee = fee * 0.5
    else:
        discounted_fee = fee

    total_fee += discounted_fee

print(f'小明每个月乘坐地铁需要的总费用为{total_fee}')

该代码首先计算小明每次乘车的费用,然后根据月工作日总乘车次数来计算整个月的费用。在计算每次的费用时,都会检查当前的累积总费用,以确定应该应用何种折扣。然后将折扣后的费用添加到总费用中。最后,输出小明每个月需要乘坐地铁的总费用。

请注意,我假定费用在每次乘车后立即从卡中扣除,而不是在乘车后的某个时间扣除。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

匿名鱼油
匿名鱼油  发表于 2023-6-20 20:02:31

回帖奖励 +8 鱼币

本帖最后由 匿名 于 2023-6-20 20:04 编辑

占楼
回复

使用道具 举报

发表于 2023-6-20 20:02:54 | 显示全部楼层

回帖奖励 +8 鱼币

评分

参与人数 1鱼币 -1 收起 理由
歌者文明清理员 -1 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-20 20:03:21 | 显示全部楼层

回帖奖励 +8 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-20 20:03:31 | 显示全部楼层

。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:03:50 | 显示全部楼层
在原有代码的基础上,可以根据题目给出的要求实现打折和400元以后的乘次需要的地铁总费用。具体实现如下:
import math

s = input("请输入小明每次乘坐地铁的单程距离:")
s = eval(s)

if s <= 6:
    sum = 3
elif s > 6 and s <= 12:
    sum = 4
elif s > 12 and s <= 22:
    sum = 5
elif s > 22 and s <= 32:
    sum = 6
else:
    sum = 6 + math.ceil((s - 32) / 20)

# 计算累计消费达到的阈值
thresholds = [100, 150, 400]

# 根据阈值进行折扣计算
for i, th in enumerate(thresholds):
    if sum * 2 >= th:
        if i == 0:
            # 消费达到100元时,价格打8折
            sum = sum * 2 * 0.8
        elif i == 1:
            # 消费达到150元时,价格打5折
            sum = sum * 2 * 0.5
        else:
            # 消费达到400元时,不再享受打折优惠
            break

print('小明每次乘坐地铁的单程费用为%s元' % sum)
在代码中,我们定义了一个列表 `thresholds`,其中包含了累计消费达到100、150和400元时的阈值。然后我们遍历该列表,根据阈值以及当前费用是否达到阈值来判断是否需要打折,并计算最终的费用。同时,如果消费达到400元,就不再享受打折优惠,因此在该条件下直接退出循环即可。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:04:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:04:46 | 显示全部楼层    本楼为最佳答案   
你已经很好地处理了基本的票价计算。接下来,我将帮你完成剩余的打折和400元后的计算部分。注意这段代码假设所有的工作日在同一个月内,并且不跨月。

以下是完整的代码:
import math

# 获取用户输入
s = input("请输入小明每次乘坐地铁的单程距离:")
s = eval(s)

# 计算单次乘车费用
if s <= 6:
    fee = 3
elif s > 6 and s <= 12:
    fee = 4
elif s > 12 and s <= 22:
    fee = 5
elif s > 22 and s <= 32:
    fee = 6
else:
    fee = 6 + math.ceil((s-32)/20)

# 计算一个月的工作日总乘车次数(上下班各算一次)
times_per_month = 20 * 2

# 计算一个月的总费用
total_fee = 0
discounted_fee = 0
for i in range(times_per_month):
    if total_fee < 100:
        discounted_fee = fee
    elif total_fee >= 100 and total_fee < 150:
        discounted_fee = fee * 0.8
    elif total_fee >= 150 and total_fee < 400:
        discounted_fee = fee * 0.5
    else:
        discounted_fee = fee

    total_fee += discounted_fee

print(f'小明每个月乘坐地铁需要的总费用为{total_fee}')

该代码首先计算小明每次乘车的费用,然后根据月工作日总乘车次数来计算整个月的费用。在计算每次的费用时,都会检查当前的累积总费用,以确定应该应用何种折扣。然后将折扣后的费用添加到总费用中。最后,输出小明每个月需要乘坐地铁的总费用。

请注意,我假定费用在每次乘车后立即从卡中扣除,而不是在乘车后的某个时间扣除。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:05:29 | 显示全部楼层
isdkz 发表于 2023-6-20 20:04
你已经很好地处理了基本的票价计算。接下来,我将帮你完成剩余的打折和400元后的计算部分。注意这段代码假 ...

评分

参与人数 1贡献 -3 收起 理由
歌者文明清理员 -3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:06:06 | 显示全部楼层

评分

参与人数 1鱼币 -2 收起 理由
sfqxx_小 -2 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-20 20:14:22 | 显示全部楼层
isdkz 发表于 2023-6-20 20:04
你已经很好地处理了基本的票价计算。接下来,我将帮你完成剩余的打折和400元后的计算部分。注意这段代码假 ...

range(40)的范围是[0,40),即0~39,是否应该改为range(1,times_per_month+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:22:22 | 显示全部楼层
花开半夏—— 发表于 2023-6-20 20:14
range(40)的范围是[0,40),即0~39,是否应该改为range(1,times_per_month+1)

实际上,我们在这里并不需要更改  range(40) 。Python 的  range()  函数生成的是一个序列,序列的最后一个元素是  range()  函数中指定的数值减去1。所以, range(40)  生成的序列是 0 到 39,共40个元素,与我们这里需要的一样,因为一个月的工作日总乘车次数为40次(上下班各一次,共20天)。

在  range()  函数中,我们并不关心序列中的具体元素,我们只关心序列中元素的数量。这里  range(40)  的意思是我们要循环40次,每次循环代表小明乘坐地铁一次。

另一方面,如果你选择使用  range(1, times_per_month+1) ,这也是完全可以的,它会生成从1到40的序列,元素数量仍然是40,对我们这个问题来说,结果是一样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-20 20:32:13 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-6-20 20:22
实际上,我们在这里并不需要更改  range(40) 。Python 的  range()  函数生成的是一个序列,序列的最后一 ...

好吧,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 20:34:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 21:23:31 | 显示全部楼层
我知道了,以后我不回答该用户的问题了,反正也轮不到我

就让 isdkz 来吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-20 22:22:56 | 显示全部楼层
sfqxx 发表于 2023-6-20 21:23
我知道了,以后我不回答该用户的问题了,反正也轮不到我

就让 isdkz 来吧


你说得对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-21 10:38:33 | 显示全部楼层
sfqxx 发表于 2023-6-20 21:23
我知道了,以后我不回答该用户的问题了,反正也轮不到我

就让 isdkz 来吧

不是,就是感觉isdkz的答案感觉更容易懂,你的代码感觉有点复杂,而且我感觉他的代码更方便阅读
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-21 10:40:43 | 显示全部楼层
sfqxx 发表于 2023-6-20 21:23
我知道了,以后我不回答该用户的问题了,反正也轮不到我

就让 isdkz 来吧

别生气,好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-21 17:46:06 | 显示全部楼层

我的代码跟他差不多啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-24 16:22:10 | 显示全部楼层
sfqxx 发表于 2023-6-21 17:46
我的代码跟他差不多啊

for i,th in numerate()看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 17:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表