Итак, я не могу понять, как заставить этот цикл выполнять итерацию или почему он не добавляет в глобальный список введенные значения. Я включил свой код ниже. Любая помощь очень ценится.
get_values() – Эта функция не принимает аргументов. Это должно подсказать
получить и получить номера от пользователя и сохранить их в списке. Один
программа имеет все значения (либо пользователь набрал «QUIT», либо они
ввело 10 значений) эта функция должна вернуть список в
код вызова.
values = []
max_num = 10
####function to prompt users for input
##and return that input
def get_values():
while len(values) < max_num or value != 'quit':
value = float(input('Enter a number or type quit to quit: '))
values.append(value)
return values
##find the average of the list
def avg(list):
return sum(values) / len(values)
##define the main function
def main():
get_values()
avg(values)
average = avg([values])
print()
print(f'The average is: {average:,.1f}')
Теперь, когда он работает, он принимает одно приглашение, а затем завершает всю программу, не запрашивая дополнительных данных.
Я не знаю, что попробовать дальше. Это действительно ставит меня в тупик, и это происходит уже последние 6 часов.
Вы возвращаетесь values внутри цикла. На этом цикл и функция завершаются. Также бессмысленно return создавать список, поскольку вместо этого вы намерены использовать глобальную переменную.
Вы никогда не используете параметр list в avg, поэтому бессмысленно требовать его и передавать. Вам также не следует называть переменную list, поскольку это затеняет встроенную функцию list.
Вероятно, здесь слишком много ошибок, чтобы это было полезно будущим посетителям. Каждый из них по отдельности очень распространен; пожалуйста, поищите, прежде чем спрашивать.
извини @tripleee, я новичок в Python и программировании в целом.






Прежде всего вам нужно изменить способ проверки входа пользователя quit.
Потому что вы делаете все входные данные плавающими и получаете ValueError.
Затем вам нужно всего лишь определить Values и max_num как global, чтобы у вас был доступ к ним и в namespace вашей функции.
Кроме того, у вас есть ошибка в отступе def get_values()return оператора; Вот почему ваш скрипт получает только 1 вход и завершает цикл. На самом деле вам даже не нужно ничего возвращать, потому что список values находится в глобальной области видимости, и другие функции тоже имеют к нему доступ.
Итак, ваш код начнется так:
global values, max_num
values = []
max_num = 10
####function to prompt users for input
##and return that input
def get_values():
while len(values) < max_num:
value = input('Enter a number or type quit to quit: ')
if value != 'quit':
value = float(value)
values.append(value)
Оператор global здесь ничего не делает. Даже если вы поместите его в функцию, которой он принадлежит, это все равно будет лишним.
Это должно завершиться неудачно с
NameErrorнаor value != 'quit'…!?