2 votes

Erreur d'indentation inattendue en Python main()

Je n'ai aucune idée de la façon de résoudre ce problème. J'ai essayé de retaper le programme.

Je reçois une erreur d'indentation inattendue pour la dernière fonction principale.

resident = 81
nonresident = 162

def main():

    # initialize counters and total tuition
    resident_counter = 0
    nonresident_counter = 0
    total_tuition = 0

    print("Name \tCode\tCredits\tTuition")
    print

    try:
        # open the data file
        infile = open('enroll.txt', 'r')

        # read the first value from the file
        student_name = infile.readline()

        # continue reading from file until the end
        while student_name != '':

            # strip the new line character and print the student's name
            student_name = student_name.rstrip('\n')
            print(student_name, end='\t')

            # read the code type, strip the new line, and print it
            code = infile.readline()
            code = code_type.rstrip('\n')
            print(code_type, end='\t')

            # read the number of credits, strip the new line, and print it
            credits = infile.readline()
            credits = int(credits)
            print(format(credits, '3.0f'), end='\t')

            # check the room type and compute the rental amount due 
            # increment the appropriate counter
            if code_type == "R" or room_type == "r":
                payment_due = credits * resident
                resident_counter += 1
            elif code_type == "N" or room_type == "n":
                payment_due = credits * nonresident
                nonresident_counter += 1
            elif code_type != "R" or code_type != "r" or code_type != "N" or code_type != "n":
                payment_due = 0

            # accumulate the total room rent
            tuition += payment_due

            # print the appropriate detail line
            if payment_due == 0:
                print('invalid code')
            else:
                print('$', format(tuition, '8,.2f'))

            # get the next studen't name
            student_name = infile.readline()

        # close the input file
        infile.close()

        # print the counters and payment total amount
        print
        print('total number of resident students: ', resident_counter)
        print('total number of nonresident: ', nonresident_counter)
        print
        print('total students: ', end='')
        print('$', format(tuition, ',.2f'))
# execute the main function

main()

0voto

hd1 Points 11522
  1. Comme l'ont noté LevLevitsky et David ci-dessus, il n'y a pas de clause except. La façon la plus simple de résoudre ce problème est d'ajouter une ligne comme la suivante à votre code avant l'appel à main :

    except: pass
  2. Le deuxième commentaire que j'ai à faire sur votre code est plus stylistique, mais vous pourriez ajouter ce qui suit, avant votre appel à main et après la clause except :

    if __name__ == '__main__':
        main()

0voto

pepr Points 4263

En plus de la disparition except o finally ou le supplément try ... Si vous jetez un coup d'œil à la code modifié vous pouvez voir les blocs de couleurs étrangement mélangés dans l'indentation. Cela signifie que vous mélangez les tabulations et les espaces ce qui peut entraîner des problèmes tels que mauvaise indentation . La raison en est que l'interpréteur pense différemment sur la façon dont les tabulations doivent être interprétées (par exemple 8 contre 4 tabulations de colonne).

Vous ne devez pas mélanger les tabulations et les espaces pour l'indentation. Je recommande personnellement de n'utiliser que les espaces. Tout éditeur digne de ce nom est capable d'étendre la touche TAB aux espaces et/ou de détabifier le mélange existant de tabulations et d'espaces.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X