我正在撰寫一個 python 腳本,在其中找到三個數字之和的平均值。我正在使用引數來輸入數字。我需要通過列印出錯誤訊息來完成腳本。如果我輸入如下內容:
平均 3 3 5
平均 3 3 4 5 6
平均 3 3 一 5
它需要列印一個錯誤,告訴我如何使用它。
這是腳本的開頭:
def main():
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
num3 = int(sys.argv[3])
avg = (num1 num2 num3)/3
print("The average of " str(num1) " " str(num2) " " str(num3) " " "is " str(round(avg,2)))
uj5u.com熱心網友回復:
編輯:
用于檢查強制輸入 3 個數字和錯誤檢查:
def main():
if len(sys.argv) != 4:
print("You did not enter the correct amount of arguments")
else:
try:
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
num3 = int(sys.argv[3])
avg = (num1 num2 num3)/3
print(f"The average of {num1} {num2} {num3} is {round(avg, 2)}")
except (UnboundLocalError, IndexError) as e:
# When you don't pass any args
print("You need to pass arguments")
print(f"($ python avg.py 3 1 2)\n Error = {e}")
except ValueError as e:
# You need to use numbers
print(f"You need to pass arguments as ints")
print(f"(1 or 432. not 1.2, 324.0)\n Error = {e}")
print(f"(1 or 432. not 1.2, 324.0)\n Error = {e}")
請參閱下面的解釋:
len(sys.argv)
將是4
當有 3 個引數時(嘗試print(sys.argv)
探索這個)
傳遞 args 時,您可以使用try
陳述句來捕獲和兩個常見例外:except
def main():
try:
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
num3 = int(sys.argv[3])
avg = (num1 num2 num3)/3
print(f"The average of {num1} {num2} {num3} is {round(avg, 2)}")
except (UnboundLocalError, IndexError) as e:
# When you don't pass any args
print("You need to pass arguments")
print(f"($ python avg.py 3 1 2)\n Error = {e}")
except ValueError as e:
# You need to use numbers
print(f"You need to pass arguments as ints")
print(f"(1 or 432. not 1.2, 324.0)\n Error = {e}")
try
將運行一個塊,并except
在塊中遇到列出的例外時運行try
(退出try
回圈)。
您還可以將代碼簡化為:
nums = [int(x) for x in sys.argv[1:4]]
avg = sum(nums)/3
并訪問您的號碼
# Same as nums1
nums[0]
并將傳入引數的長度更改為任何內容>= 1
(如果需要):
def main():
try:
nums = [int(x) for x in sys.argv[1:len(sys.argv)]]
avg = sum(nums)/len(nums)
print(f"The average of {', '.join([str(x) for x in nums])} is {round(avg, 2)}")
except (UnboundLocalError, IndexError, ZeroDivisionError) as e:
# When you don't pass any args
print("You need to pass arguments")
print(f"($ python avg.py 3 1 2)\n Error = {e}")
except ValueError as e:
# You need to use numbers
print(f"You need to pass arguments as ints")
print(f"(1 or 432. not 1.2, 324.0)\n Error = {e}")
uj5u.com熱心網友回復:
如果您正在談論將one
arg 捕獲為錯誤,則可以簡單地捕獲value
錯誤。
def main():
try:
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
num3 = int(sys.argv[3])
avg = (num1 num2 num3)/3
print("The average of " str(num1) " " str(num2) " " str(num3) " " "is " str(round(avg,2)))
except ValueError:
print("All your values need to be ints")
這將確保作為 arg 傳入的數字之外的任何內容都會導致 message All your values need to be ints
。
這不會捕獲任何其他錯誤,因此您必須單獨捕獲它們。例如,您只傳遞 2 個值的第一個示例將不起作用,因為沒有num3
,但我假設這不是您在這里詢問的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469344.html