我知道两种方法来检查输入不是负数,但我想知道哪一种是最好的。我越来越熟悉python,但我仍然很困惑,当我有两个选择时,什么是最好的。如果你看到任何其他的方法,请让我知道,以及我正在努力学习。非常感谢你
第一个选择(我的教授):
def get_quantity():
while True:
try:
quantity = int(input("Enter quantity: "))
if quantity > 0:
return quantity
else:
print("Invalid integer. Please try again.")
except ValueError:
print("Invalid integer. Please try again.")
第二个选择(我的):
def get_quantity():
while True:
try:
quantity = int(input("Enter quantity: "))
neg_test = math.sqrt(quantity)
return quantity
except ValueError:
print("Invalid integer. Please try again.")
2条答案
按热度按时间whlutmcx1#
我认为第一种方法更好,你只是比较
quantity
和0
。在第二种方法中,需要额外的开销
import math
模块或math
模块的sqrt()
功能。另外,当你给予一个负数给
sqrt()
函数时,你会得到:这个
ValueError
将被except
块捕获。在第二个选项中,每次您给予负数或任何不是数字
except
块将被执行。在第一个选项中,如果您给予一个负数或零,
else
将被执行;如果你给予任何不是一个数字
except
块将被执行。u3r8eeie2#
我不喜欢第一个版本的地方是它在
else
和except
下有相同的“块”。所以我的建议是:另一种选择是在将字符串转换为整数之前检查字符串是否为数字,从而排除负号: