为什么这在我的驾驶成本函数代码中不起作用

-1 投票
2 回答
61 浏览
提问于 2025-04-14 17:24

这是我遇到的问题的相关信息:

编写一个名为 driving_cost() 的函数,它需要三个输入参数:每加仑多少英里(miles_per_gallon)、每加仑多少钱(dollars_per_gallon)和行驶的英里数(miles_driven)。这个函数会返回开车行驶这些英里所需的美元费用。当你用参数 (20.0, 3.1599, 50.0) 调用这个函数时,它会返回 7.89975

在一个程序中定义这个函数,程序的输入是汽车每加仑多少英里和每加仑汽油的价格(都是浮点数)。通过调用你的 driving_cost() 函数三次,输出开车行驶10英里、50英里和400英里的汽油费用。

输出每个浮点数时,要保留小数点后两位,可以这样做: print(f'{your_value:.2f}')

每当我把 miles_driven 设置为 float(input()) 时,我都会遇到 EOF 错误,什么也不发生。也许是我自己的问题,但我已经卡在这里一天了,我可以用10、50和400分别调用三次来打印结果,但我无法让 miles_driven = float 正常工作。

# This was the code I last tried

# Define your function here.
miles_per_gallon = float(input())
dollars_per_gallon = float(input())
miles_driven = float(input())


def driving_cost(miles_per_gallon, dollars_per_gallon, miles_driven):
    if miles_driven == 'None':
        miles_driven = [10, 50, 400]
        for m in miles_driven:
            cost = (dollars_per_gallon / miles_per_gallon) * miles_driven
            return cost
            print(f'{cost:.2f}')

    else:
        cost = (dollars_per_gallon / miles_per_gallon) * miles_driven
        print(f'{cost:.2f}')


if __name__ == '__main__':
    # Type your code here.

    print(driving_cost(miles_per_gallon, dollars_per_gallon, miles_driven))

2 个回答

0

这是我写的代码,确保它能通过所有测试。谢谢你,Marcin。

下面是计算开车成本的函数:

def driving_cost(miles_per_gallon, dollars_per_gallon, miles_driven):
    cost = (dollars_per_gallon / miles_per_gallon) * miles_driven
    return cost

如果name等于'main':
    # 在这里输入你的代码。

miles_per_gallon = float(input())
dollars_per_gallon = float(input())

miles = [10,50,400]
   
print(f'{driving_cost(miles_per_gallon, dollars_per_gallon, miles[0]):.2f}')
print(f'{driving_cost(miles_per_gallon, dollars_per_gallon, miles[1]):.2f}')
print(f'{driving_cost(miles_per_gallon, dollars_per_gallon, miles[2]):.2f}')
0

其实你不需要问用户输入 miles_driven,因为题目已经明确要求只给出10、50和400英里的结果,那干嘛还要让用户输入呢?另外,if miles_driven == 'None': 这个检查是不对的,因为它是在检查一个字符串值 "None",而不是实际的 None。还有,你的代码里有一个无条件的 return cost,这会导致循环直接结束,因为它在第一次运行后就会返回结果,后面的 print() 根本不会执行(你的开发环境应该会提示这个问题)。其实这些都可以简单得多:

def driving_cost(miles_per_gallon, dollars_per_gallon, miles_driven):
    cost = (miles_driven / miles_per_gallon) * dollars_per_gallon
    return cost

if __name__ == '__main__':
    miles_per_gallon = float(input("Enter the car's miles per gallon: "))
    dollars_per_gallon = float(input("Enter the price of gas per gallon: "))

    for miles in [10, 50, 400]:
        cost = driving_cost(miles_per_gallon, dollars_per_gallon, miles)
        print(f'{cost:.2f}')

撰写回答