Как мне изменить свой код для использования массивов?

#python #arrays

#python #массивы

Вопрос:

Пока это мой код. Я могу заставить свой код запрашивать у пользователя ввод 4 результатов теста. Я сделал так, чтобы он спрашивал «Введите оценку для теста номер N:»

Моя проблема заключается в возможности извлекать входные значения из того, что вводит пользователь. Моя конечная цель — иметь возможность отбросить самую низкую оценку теста и вычислить среднее значение с оставшимися оценками. Используемые входные данные будут 99, 99, 99 и 77.

У меня есть пример, который принимает значение min из переменной, которой присвоено X чисел, но не из того, когда вы получили бы его из пользовательского ввода.

 def main():
    scores = getNumbers()

def getNumbers():
    testCountIs = 0
    testNum = 4
    totalScore = 0

    for test in range(1, testNum 1):
        print('Enter the score for test number', int(testCountIs 1), end='')
        testScores = int(input(': '))
        testCountIs  = 1

main()
 

Правка2: ниже приведен код, который работает для этой программы.

     def main():
        scores = getNumbers()
        print("The average with the lowest score dropped is: ",float(sum(scores))/len(scores))

    def getNumbers():
        scores=[]
        for testNum in range(4):
           print('Enter the score for test number',int(testNum 1),end='')
           scores.append(int(input(': ')))
        scores=[score for score in scores if min(scores)!=score]
        return scores

    main()
 

Комментарии:

1. Это должно быть хорошей отправной точкой: tutorialspoint.com/python/python_lists.htm

2. Я думаю, вы имеете в виду списки… В то время как python имеет массивы, [] называется списком

3. Имеет больше смысла, чтобы ваш цикл начинался с нуля и присваивался test_score[test] . На самом деле вам не нужно количество, так как это в основном просто дублирует индекс цикла.

4. Вы правы, мой учитель использует эти термины как взаимозаменяемые.

5. Значит, ваш учитель или ваш учебник, у которого он есть, не учил их этому? Все, что вам нужно, это получить список и append использовать его в цикле. Вы также захотите вернуть его, потому что в настоящее время ваша getNumbers() функция возвращает и присваивает None scores

Ответ №1:

Это то, что вы хотите:

 def getNumbers():
   scores=[]
   for testNum in range(4):
       print('Enter the score for test number %d'%(testNum 1)),
       scores.append(input(': '))
   scores=[score for score in scores if min(scores)!=score]
   return scores

scores= getNumbers()
average= float(sum(scores))/len(scores)
print average
 

Редактировать для python3

 def getNumbers():
    scores=[]
    for testNum in range(4):
       print('Enter the score for test number',int(testNum 1),end='')
       scores.append(int(input(': ')))
    scores=[score for score in scores if min(scores)!=score]
    return scores

scores= getNumbers()
print(float(sum(scores))/len(scores))
 

Комментарии:

1. Зачем вам нужно разделять двоеточие? Я думаю, что вопрос просто хотел, чтобы его запрашивали для testNum значений, а не для ввода 1:2:3

2. В ответе говорится: «предполагая, что входные значения разделены на:»

3. Я это понял, но testNum значение было моей точкой зрения. Не похоже, что требуется одна строка ввода

4. Я не уверен, что вы подразумеваете под разделением пробелами. Моя программа должна будет 4 раза запрашивать пользователя ввести свои результаты тестов отдельно.

5. Добавлен код и для этого. Используйте код в edit2, который, я думаю, вам нужен.

Ответ №2:

Ваш код был близок. Просто нужно определить список, добавить к нему, а затем вернуть его

 scores = [] 
for test in range(testNum):
    print('Enter the score for test number', int(test   1), end='')
    score =  int(input(': ')
    scores.append(score) 
return scores 
 

Вы должны вычислить минимум, отбросить его и найти среднее значение вне этой функции

Комментарии:

1. как мне добавить список, который будет введен?

2. Не уверен, что вы имеете в виду. Вы получаете входные данные перед добавлением. Я просто сделал и то, и другое вместе в одной строке. Но я отредактировал, чтобы прояснить это