методы укладки или двойные методы? - PullRequest
0 голосов
/ 30 сентября 2019

Я работал над кодом ниже в Python, и изначально он был в ТОПе. Однако возникла следующая проблема: «AttributeError: объект list» не имеет атрибута split. Я думал, что после того, как я добавлю его в listNum, я бы потом разделил его. Одним из решений было использовать его в качестве ДНА, где использовалось следующее: «inf = mainFile.read (). Split ().»Это выглядит странно, и сначала я подумал, что это не сработает, но оказалось, что это решение проблемы, с которой я столкнулся. В каких случаях допускается двойная укладка, так как я думаю, что это обычно не наблюдается? Кроме того, есть ли имя или как оно называется для этого типа синтаксиса, чтобы я мог больше изучить его.

def computes(textFile):
    listNum = list()
    with open(textFile) as mainFile:
        mainFile.read()
        for number in mainFile:
            listNum.append(int(number))
    listNum.split()
    summed = sum(listNum)
    avgNum = sum(summed)/len(listNum)
    return avgNum

def main():
    textFile = input("Enter the text file: ")
    print(computes(textFile))


main()






def computes(textFile):
    listNum = list()
    with open(textFile) as mainFile:
        inf = mainFile.read().split()
        for number in inf:
            listNum.append(int(number))
    avgNum = sum(listNum)/len(listNum)
    return avgNum

def main():
    textFile = input("Enter the text file: ")
    print(computes(textFile))  

main()

Содержимое в текстовом файле: 45 66 88 100 22 98

1 Ответ

0 голосов
/ 30 сентября 2019

Прежде всего, то, что вы имеете в виду, называется цепочкой методов. Если это выглядит странно, просто знайте, что:

inf = mainFile.read().split()

эквивалентно

temp = mainFile.read()
inf = temp.split()

Во-вторых, вы выполняете .split () для экземпляров двух разных типов в вашемпримеры.

  • listNum имеет список типов, для которого не определен метод split ()
  • mainFile.read () возвращает экземпляр str, для которого split () метод определен
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...