#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. Не уверен, что вы имеете в виду. Вы получаете входные данные перед добавлением. Я просто сделал и то, и другое вместе в одной строке. Но я отредактировал, чтобы прояснить это