#python
#python
Вопрос:
Обновление: кажется, я неправильно понял указания для кода.
Абсолютно новичок в Python, поэтому любая помощь приветствуется.
Я пытаюсь найти наивысший балл и наименьший балл из массива, используя циклы.
Вот код, над которым я работал:
nums = [6, 8, 9, 5, 3, 3, 5, 3]
highest_score = []
lowest_score = []
def calculate_Scores(nums):
i = 1
max = min = nums[0]
if nums[0] > nums[1]:
highest_score.append(nums[0])
elif nums[0] < nums[1]:
lowest_score.append(nums[0])
while i < len(nums):
if nums[i] > max:
highest_score.append(nums[i])
if nums[i] < min:
lowest_score.append(nums[i])
i = 1
calculate_Scores(nums)
print(highest_score)
print(lowest_score)
Вывод:
[8, 9] #highest
[6, 5, 3, 3, 5, 3] #lowest
Код отлично работает для приведенного выше массива, но когда вы меняете nums массива на:
[2, 8, 9, 5, 3, 3, 5, 3]
Это результат:
[8, 9, 5, 3, 3, 5, 3] #highest
[2] #lowest
Как я могу заставить это работать так, чтобы 3 также переходило в переменную lowest_score?
Есть ли какой-либо другой способ заставить весь этот процесс работать? (Без использования max () и min ())
Комментарии:
1. Почему вы создаете
highest_score
lowest_score
списки и? Почему бы просто не сделать их числами и заменять их каждый раз, когда вы получаете большее значение? Как бы то ни было, вы просто сортируете числа на основе того, больше они или меньше первого элемента.2. Какова логика определения наивысшего и наименьшего? Обычно есть одно значение, которое является наименьшим, и одно, которое является наивысшим.
3. Я понимаю, к чему вы клоните. Я в основном считываю числа из текстового файла, текстовые файлы содержат оценки разных команд. Результаты должны обновляться после ввода пользователем новых результатов. Вот направление, которому я пытаюсь следовать: «На самом деле, вы можете использовать цикл, в каждой итерации цикла вы считываете одно число из файла, сравниваете его с текущим наивысшим / наименьшим баллом и при необходимости обновляете наивысший / наименьший».
4. Из инструкций, которыми вы поделились, похоже, что наивысшие и наименьшие оценки — это числа, а не списки.
5. @GreenCloakGuy Не могли бы вы уточнить??
Ответ №1:
Если вы пытаетесь найти наибольшее число, почему вы постоянно добавляете к highest_score
or lowest_score
? Разве вы не хотели бы добавлять только максимум или минимум? Почему бы не вычислить их сначала?
nums = [6, 8, 9, 5, 3, 3, 5, 3]
highest_score = []
lowest_score = []
def calculate_Scores(nums):
i = 1
max = min = nums[0]
# first, calculate the max and min.
while i < len(nums): # (possible improvement: replace this with a for loop)
if nums[i] > max:
max = nums[i] # replace max with the new max
if nums[i] < min:
min = nums[i] # replace min with the new min
i = 1
# now that you've done that, add them to the highest_score and lowest_score
highest_score.append(max)
lowest_score.append(min)
Обратите внимание, что, хотя это может быть полезным учебным упражнением, нет практической причины не использовать встроенные функции max()
и min()
в этой ситуации (или в любой другой ситуации, когда вы пытаетесь найти один элемент, который каким-то образом превосходит другие).
Комментарии:
1. Большое вам спасибо за вашу помощь! Кажется, я неправильно понял указания.