检查加油 pset5 失败

问题描述 投票:0回答:2

我正在做加油,这是CS50p中的一道题;我已按照指示重组了 Fuel.py 代码,并且已通过检查 50。不幸的是,我的 test_fuel.py 代码似乎未通过 check50,但当我按照问题集说明检查时,它通过了 100%。有人可以告诉我我做错了什么吗?

这是我的 test_fuel.py 代码

from fuel import convert, gauge
import pytest


def test_zero_division():
    with pytest.raises(ZeroDivisionError):
        convert("2/0")

def test_value_error():
    with pytest.raises(ValueError):
        convert("cat/cat")


def test_convert():
    assert convert("1/2") = 50
    assert convert("1/100") == 1
    assert convert("99/100") == 99

def test_gauge():
    gauge(50) == "50%"
    gauge(1) == "E"
    gauge(99) == "F"

这是我的fuel.py 代码,我正在测试的代码。

def main():
    fraction = input("Fraction: ")
    f = convert(fraction)
    percent = gauge(f)
    print(percent)




def convert(fraction):
    while True:
        try:
            numerator, denominator = fraction.split("/")
            denominator = int(denominator)
            numerator = int(numerator)
            percent = int(numerator / denominator * 100)
            if percent <= 100:
                return percent

            else:
                fraction = input("Fraction: ")
                pass

        except (ZeroDivisionError,ValueError):
            raise



def gauge(percent):
    # tank is full
    if percent >= 99:
        return "F"
    # tank is empty
    elif percent <= 1:
        return "E"
    # tank is not full or empty
    else:
        return str(percent) + "%"


if __name__ == "__main__":
    main()

我希望我的 test_fuel.py 通过 check50;但只有当我按照问题集说明进行测试时它才会通过。

python cs50
2个回答
1
投票

您发布的代码不包含

gauge()
功能。然而,我在没有运行你的代码的情况下注意到了 3 个错误。

第一个错误与这两个断言有关:

assert fuel.convert("1/2") == 1 / 2
assert fuel.convert("3/4") == 3 / 4

查看说明。他们说:

convert()
函数应该“以百分比形式返回分数,四舍五入到 0 到 100 之间最接近的整数值”。所以应该是:

assert fuel.convert("1/2") == 50 assert fuel.convert("3/4") == 75
第二个错误与 

gauge()

 函数有关。

assert fuel.gauge(1/2) == "50%" assert fuel.gauge(99/100) == "F" assert fuel.gauge(0/100) == "E"
说明说:“

gauge 需要一个整数并返回一个字符串”所以这些应该是:

assert fuel.gauge(50) == "50%" assert fuel.gauge(99) == "F" assert fuel.gauge(0) == "E"
最后,我注意到你的转换函数有

return fraction_

。我很确定 
fraction_
 是浮点数而不是整数。

修复这 3 次,应该就可以了。


0
投票
在 check50 后,我进行了其中一个测试,其中的 int 值错误,就我而言,问题是我忘记用任何 int 值测试转换函数,而只测试了错误消息。

因此,我们需要时刻牢记是否有人向我们提出要求,以及我们正在给予什么。

© www.soinside.com 2019 - 2024. All rights reserved.