计算加班费时,哪一项比较好?

我希望有人解释一下这两者在解决这个问题方面有什么区别,以及哪一个更好。


使用 try 和 except 重写您的支付程序,以便您的程序通过打印消息并退出程序来优雅地处理非数字输入。下图展示了程序的两次执行:


Enter Hours: 20

Enter Rate : nine

Error, please enter numeric input


Enter Hours: forty

Error, please enter numeric input

input_hours = input('Enter Hours: ')

try:

    hours = float(input_hours)              

except ValueError:

    print('Error, please enter numeric input')

    quit()

input_rate = input('Enter Rate: ')

try:

    rate = float(input_rate)                

except ValueError:

    print('Error, please enter numeric input')

    quit()

if hours < 40:

    pay = rate * hours                      

else:

    overtime = hours - 40                   

    pay = (rate * 40.0) + (1.5 * rate * overtime)

print(pay)

或者


try:

    hrs = input('Enter Hours: ')

    hr = float(hrs)

    rate = input('Enter Rate: ')

    rt = float(rate)

    if float(hr) <= 40:

        print(hr * rt)

    else:

        hrr = hr - 40

        rr = hrr * 1.5 * rt

        print(40 * rt + rr)

except:

    print('Error, please enter numeric input')


MMTTMM
浏览 83回答 3
3回答

叮当猫咪

我们分别将它们称为 way1 和 way2。在方式 1 中,您在每次输入后检查值错误,但在方式 2 中,您在代码片段之后检查任何错误(在这种情况下,它很可能是值错误)。Way1 在每次输入后检查错误,way2 整体检查错误。在Python中,如果出现任何错误,编译器将停止并抛出错误。假设由于人为错误,您将收到属性错误,way2 将打印:“错误,请输入数字”但是,way1 会给你一个错误,并且代码停止工作,你必须重新运行它。现在我们来谈谈空间和时间复杂度,两者的代码具有相同的复杂度如果其他人想理解您的代码,在无法联系到您的情况下,他/她将很容易理解 way2 代码片段,因为它更干净且易于阅读。

米脂

第一个 Try 语句中有重复的代码。有两个 Try 和 except 处理每个用户输入的错误,而在第二个代码块中只有一个。不要重复自己(DRY)原则指出,逻辑中的重复应该通过抽象来消除。向代码库添加额外的、不必要的代码会增加将来扩展和维护软件所需的工作量。第二个 Try 语句看起来更干净、更易于阅读,并且是首选的逻辑方法。

大话西游666

这些方法之间的主要区别在于,您是否在所有代码周围都有一个 try-catch 块,或者只是在错误检查周围有一个 try-catch 块。首先,第一个将错误检查拆分为多个 try-except 块,而第二个将整个代码块放入单个 try- except 块中。其次,第一个使用 quit() 函数跳过代码的计算部分,而第二个则通过将其放在 try 块内来跳过它。我想说第二种方法更干净、更容易阅读。首先,您只有一个 try- except 块,这减少了冗余代码的数量。其次,通过将所有代码都放在 try- except 块中而不是让程序退出来跳过代码,可以更容易地看到发生了什么。最后,第二段代码更短、更简洁,对我来说更像是标准实践。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python