使用系统argv对于命令promp中的列表

2024-10-01 09:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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!")

这是命令提示符中使用的行:

^{pr2}$

结果如下:

Your input is invalid!

Tags: ofthenumberinputlenissyssum
3条回答

输入无效,因为列表中也包含逗号(',')。 要删除它们,可以使用以下行:

listOfNumbers = list(sys.argv[1].split(','))

这是工作代码-

import sys
try:

    listOfNumbers_str = list(sys.argv[1:])
    #print listOfNumbers_str
    listOfEvenNumbers = []
    listOfOddNumbers = []
    listOfNumbers = [int(i) for i in listOfNumbers_str]
    #print listOfNumbers

    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!")

我改变了几件事-

  1. 系统argv[1:]

给出从索引1到结尾的所有元素

  1. listOfNumbers=[int(i)for i in listOfNumbers_str]

在系统argv返回一个字符串元素的数组,而不是整数,我在这里使用list comprehension从字符串列表构建一个整数列表。在

运行程序->

^{pr2}$

我这样做是为了让它发挥作用:

strOfNumbers = sys.argv[1]
listOfNumbers= [int(x) for x in strOfNumbers.split(',')]

相关问题 更多 >