
本文旨在解决CS50燃料量表程序中,由于对输入数据类型限制,导致程序无法正确处理非整数输入的问题。原始程序期望分子和分母均为整数,当输入类似"1.5/3"这样的非整数时,程序会因为类型转换错误而重新提示。本文将提供修改后的代码,使其能够正确处理非整数输入,并详细解释修改的原因和实现方法。
原始代码中的convert函数,尝试将输入字符串通过split('/')分割成分子和分母,并直接使用int()函数将其转换为整数。如果输入的分子或分母包含小数,int()函数会抛出ValueError异常,导致程序重新提示。
为了解决这个问题,我们需要将分子和分母转换为浮点数进行计算,然后再将结果转换为整数。修改后的convert函数如下所示:
def main():
f = get_fraction_value('Fraction: ')
if f >= 99:
print('F')
elif f <= 1:
print('E')
else:
print(f'{f}%')
def get_fraction_value(prompt):
while True:
try:
n,d = input(prompt).split('/')
result = 100*float(n)/float(d)
if result>100:
raise ValueError
else:
return int(result)
except (ValueError, ZeroDivisionError):
pass
main()代码解释:
通过将分子和分母转换为浮点数进行计算,并进行异常处理,我们可以使CS50燃料量表程序能够正确处理包含小数的输入。这种方法不仅解决了特定问题,也展示了在编程中如何处理不同类型的数据,以及如何通过异常处理提高程序的健壮性。在实际开发中,我们需要根据具体的需求选择合适的数据类型和处理方式,以确保程序的正确性和可靠性。
以上就是燃料量表程序:处理非整数输入的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号