如何使用命令行将数字列表传递给函数 sys.argv Python3
How to pass a numbers list to function using command line sys.argv Python3
我想使用 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)
您无法将 list
转换为 int
,您必须构建一个新列表来逐一转换您的参数:
number_lst = [int(i) for i in sys.argv[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)
您无法将 list
转换为 int
,您必须构建一个新列表来逐一转换您的参数:
number_lst = [int(i) for i in sys.argv[1:]]