【发布时间】:2018-03-02 03:18:13
【问题描述】:
我的带有input("Enter data") 的代码可以工作,但是一旦我将其更改为sys.argv,它就不行了。有什么建议吗?
这是程序代码:
import sys
try:
listOfNumbers = list(sys.argv[1])
listOfEvenNumbers = []
listOfOddNumbers = []
for x in listOfNumbers:
if x % 2 == 0:
listOfEvenNumbers.append(x)
elif x % 2 != 0:
listOfOddNumbers.append(x)
countOfEvenNumbers = len(listOfEvenNumbers)
countOfOddNumbers = len(listOfOddNumbers)
sumOfEvenNumbers = sum(listOfEvenNumbers)
sumOfOddNumbers = sum(listOfOddNumbers)
highestNumber = max(listOfNumbers)
lowestNumber = min(listOfNumbers)
differenceBetweenNumbers = highestNumber - lowestNumber
sumOfCenteredNumbers = sum(listOfNumbers) - highestNumber - lowestNumber
countOfCenteredNumbers = len(listOfNumbers) - 2
centeredAverage = sumOfCenteredNumbers/countOfCenteredNumbers
print("The sum of all even numbers is %i, the sum of all odd numbers is %i,the difference between the biggest and smallest number is %i, the total number of even numbers is %i, the total number of odd numbers is %i,the centered average is %i.")% (sumOfEvenNumbers, sumOfOddNumbers, differenceBetweenNumbers, countOfEvenNumbers, countOfOddNumbers, centeredAverage)
except:
print("Your input is invalid!")
这是命令提示符中使用的行:
evenOddCalculator.py 1,2,3,4
它给出了结果:
Your input is invalid!
【问题讨论】:
-
试试 evenOddCalculator.py 1 2 3 4,空格不是逗号。
-
不,它给出了相同的结果。
-
因此,一般来说,将一大段代码包装在
try-except中并不好,因为您永远无法确定哪里异常来自。如果你有一个“bare except”子句,即使是 moreso。尝试使用try-except包装最少的代码,并明确捕获您期望的异常,例如except ValueError:、except KeyError等...
标签: python list command arguments system