2016-10-16 2 views
0

Это мой код. Я могу получить мой код, чтобы побудить пользователя ввести 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() 

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

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

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

+4

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

+0

. Для вашего цикла больше смысла начинать с нуля, и присвойте 'test_score [test]'. Вам действительно не нужен счет, поскольку он просто дублирует индекс цикла. – tripleee

ответ

0

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

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)) 
+0

Зачем вам нужно разделять на двоеточие? Я думаю, что вопрос просто хотел получить подсказку для значений 'testNum', а не ввода' 1: 2: 3' –

+0

Ответ говорит: «если предположить, что входные оценки разделены:« – yabhishek

+0

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

0

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

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 

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

+0

Как добавить список, который будет введен? – Alina

+0

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

Смежные вопросы