How to pass a numbers list to function using command line sys.argv Python3 [重复]

问题描述 投票:0回答:1

我想使用

sys.argv[]
从命令行获取 5 个数字的列表到一个函数 (
def calc_avg
),因此可以对它们进行平均。但我不断得到 -
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
.

import sys


def calc_avg(grades):
    average = sum(grades) / len(grades)
    return average


def get_letter(averaged_grades):
    if averaged_grades >= 90:
        return "A"
    elif averaged_grades >= 80:
        return "B"
    elif averaged_grades >= 70:
        return "C"
    elif averaged_grades >= 60:
        return "D"
    elif averaged_grades < 59:
        return "F"


def print_results(average, letter_grade):
    print(f"Average: {average}")
    print(f"Letter grade: {letter_grade}")


try:
    number_lst = int(sys.argv[1:])


except ValueError:
    print("Error, all grades must be numeric.")

calculated_average = calc_avg(number_lst)
letter_grade = get_letter(calculated_average)
print_results(calculated_average, letter_grade)
python python-3.x casting typeerror argv
1个回答
1
投票

你不能将

list
转换为
int
,你必须建立一个新的列表来一个一个地转换你的参数:

number_lst = [int(i) for i in sys.argv[1:]]
© www.soinside.com 2019 - 2024. All rights reserved.