Файловая итерация. Невозможно использовать объект с плавающей точкой в ​​цикле for - PullRequest
0 голосов
/ 07 мая 2018
 def main():
        printIntro() # prints into for user
        diveline = processDives() # calls function to read a file


    def printIntro():
        print("Welcome to the Diver Scoring program. This program will calculate an \n overall score for a diver, based on individual dives.")
        #prints intro for user

    def processDives():
        file_object = open("DiveData.txt", 'r') #opens desired file in read mode
        diveline = file_object.readlines() #reads the line of the file and develops it into a string
        for line in diveline: #iterates through each line in diveline
            calculateDiveScore(line) # calls function to find calculations for dive scores
        print("\nThe average score for these dives is") #prints the average for scores


    def calculateDiveScore(diveline):
        diveline = diveline.split()
        diveNum = int(diveline[0]) #defines variable for dive number for each dive
        difficulty = float(diveline[1]) #defines variable for difficulty for each dive
        scoreList = diveline[2:] # defines variables to create score list for each dive
        scoreList.remove(max(scoreList)) #removes max value from scoreList
        scoreList.remove(min(scoreList)) #removes min value from scoreList
        sumscoreList = sum(float(i) for i in scoreList) # finds the sum of scoreList
        finalScore = (sumscoreList * difficulty) *.6 # multiplies difficulty and .6 to find the final value for the diver's scores
        print("\nThe diver's score for dive", diveNum, "is", "{0:.2f}".format(finalScore)) # outputs info for user to see which dive has which score
        for i in finalScore:
print(sum(i))


    main() #calls main to operate first

Эта программа просматривает числовые значения в текстовом файле, чтобы найти оценки для нескольких погружений. Я пытаюсь найти средний балл за все погружения. Значения, которые я пытаюсь найти среднее, представлены переменной "finalScore". Я пытаюсь перебрать значения в цикле for, однако мне выдается ошибка типа, утверждающая, что объект с плавающей запятой не повторяется. Как еще можно найти сумму и среднее значение этих значений в finalScore?

Это текстовый файл, который я использую для этой программы.

1 3,5 5,5 6,0 7,0 6,5 6,5 5,5 7,5

2 2,0 8,0 8,5 8,5 9,0 8,0 8,5 8,0

1 Ответ

0 голосов
/ 07 мая 2018
sumscoreList = sum(float(i) for i in scoreList)

Здесь sum() НЕ создает итерацию. Он просто суммирует предоставленные ему значения и возвращает значение . Имя также вводит в заблуждение, поскольку предполагает, что переменная является списком.

...