как вернуть список внутри функции без запятых или [] - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать программу, использующую Python, которая возвращает переменную высоту без запятых или [], как я сделал для своей функции printList. Однако я не могу сделать это так, как я делал в своей функции printList, не печатая переменную, что я не хочу делать.

Вот мой код: Проблема возникает в функции nextYear.

def printList(heights):
    print(*heights, sep = " ")

def findAverage(heights):
    total = 0
    for i in range(len(heights)):
        total += heights[i]
        i += 1
    average = total / len(heights)
    return ("{:.2f}".format(average))

def findSmallest(heights):
    smallest = heights[0]
    for i in range(len(heights)):
        if heights[i] < smallest:
            smallest = heights[i]
        else:
            i += 1
    return smallest

def findLargest(heights):
    largest = heights[0]
    for i in range(len(heights)):
        if heights[i] > largest:
            largest = heights[i]
        else:
            i += 1
    return largest

def nextYear(heights):
    for i in range(len(heights)):
        heights[i] += 5
        i += 1
    heights = (*heights, sep = " ")
    return heights

#main routine

heights = [33, 45, 23, 43, 48, 32, 35, 46, 48, 39, 41]
printList(heights)
print("Average is " + str(findAverage(heights)))
print("Smallest is " + str(findSmallest(heights)))
print("Largest is " + str(findLargest(heights)))
print("Predicted heights after a year")
printList(nextYear(heights))

Ожидаемый результат:

33 45 23 43 48 32 35 46 48 39 41
Average is 39.36
Smallest is 23
Largest is 48
Predicted heights after a year
38 50 28 48 53 37 40 51 53 44 46

Спасибо за помощь:)

1 Ответ

3 голосов
/ 27 марта 2020

Чтобы объединить элементы списка в одну строку, используйте join.

    heights = " ".join(str(h) for h in heights)

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

print(" ".join(str(h) for h in heights))

РЕДАКТИРОВАТЬ: Есть еще несколько вещей, чтобы отметить. В nextYear не нужно увеличивать i; это работа for l oop в python. Это может быть более приятное преобразование с списком , которое стоит изучить:

next_heights = [h + 5 for h in heights]

в findLargest, вы можете проверить max встроенный . Здесь также могут помочь min и sum.

Использование .format или f-строк почти всегда предпочтительнее конкатенации.

print("Largest is {}".format(findLargest(heights))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...