鱼C论坛

 找回密码
 立即注册
查看: 2500|回复: 5

[已解决]python题目

[复制链接]
发表于 2023-3-24 19:51:55 | 显示全部楼层 |阅读模式

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

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

x
题目描述

根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。


输入

输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。


输出

输出一行,包含一个整数,表示邮费。


想知道这个题怎么写,如果不用ceil
最佳答案
2023-3-25 11:06:28
# 读取输入
weight, is_express = input().split()
weight = int(weight)

# 计算邮费
basic_fee = 8
if weight <= 1000:
    total_fee = basic_fee
else:
    extra_weight = weight - 1000
    if extra_weight % 500 == 0:
        extra_fee = (extra_weight // 500) * 4
    else:
        extra_fee = ((extra_weight // 500) + 1) * 4
    total_fee = basic_fee + extra_fee

if is_express == 'y':
    total_fee += 5

# 输出结果
print(total_fee)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-24 19:55:27 | 显示全部楼层
w, n = input().split()
w=int(w)
m=0
if w<=1000:
    m=8
else:
    m+=w//500+bool(w%500)
if n=='y':
    m+=5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-24 20:05:30 | 显示全部楼层
这个问题可以通过整数运算来解决,不需要使用ceil函数。下面是一个使用Python编写的示例代码:
def calculate_postage(weight, is_expedited):
    base_fee = 8
    overweight_fee = 0
    expedited_fee = 5 if is_expedited == 'y' else 0

    if weight > 1000:
        overweight_weight = weight - 1000
        overweight_fee = (overweight_weight + 499) // 500 * 4

    postage = base_fee + overweight_fee + expedited_fee
    return postage

# 输入
input_str = input()
weight_str, is_expedited = input_str.split()
weight = int(weight_str)

# 计算邮费
postage = calculate_postage(weight, is_expedited)

# 输出
print(postage)

这个代码中,我们定义了一个calculate_postage函数,该函数接受重量和是否加急作为输入参数。

我们首先计算基本费用、超重费用和加急费用。对于超重费用的计算,我们使用整数除法//来向上取整,而不需要使用ceil函数。

最后,我们将这三个费用相加并返回邮费。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-24 20:16:36 | 显示全部楼层
isdkz 发表于 2023-3-24 20:05
这个问题可以通过整数运算来解决,不需要使用ceil函数。下面是一个使用Python编写的示例代码:

没必要这么复杂吧…这只是道简单的算术题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-25 11:06:28 | 显示全部楼层    本楼为最佳答案   
# 读取输入
weight, is_express = input().split()
weight = int(weight)

# 计算邮费
basic_fee = 8
if weight <= 1000:
    total_fee = basic_fee
else:
    extra_weight = weight - 1000
    if extra_weight % 500 == 0:
        extra_fee = (extra_weight // 500) * 4
    else:
        extra_fee = ((extra_weight // 500) + 1) * 4
    total_fee = basic_fee + extra_fee

if is_express == 'y':
    total_fee += 5

# 输出结果
print(total_fee)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-25 14:16:32 | 显示全部楼层

感觉挺好的思路,就是没写好,但是思路是最好的,想给最佳的,就是有点瑕疵,代码没写完整
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 21:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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