0
name = input("please enter your name\n")
score1=input("please enter your first test score out of 10\n")
score2=input("please enter your second test score out of 10\n")
score3=input("please enter your third test score out of 10\n")
class_=input("please enter the name of your class either class1,class2 or     class3\n")
if class_== ("class1"):
myfile=open("class1.txt","a")
myfile.write(name)
myfile.write("-")
myfile.write(score1)
myfile.write("-")
myfile.write(score2)
myfile.write("-")
myfile.write(score3)
myfile.write("-")
myfile.write(class_)
myfile.write("\n")
myfile.close()
elif class_== ("class2"):
myfile=open("class2.txt","a")
myfile.write(name)
myfile.write("-")
myfile.write(score1)
myfile.write("-")
myfile.write(score2)
myfile.write("-")
myfile.write(score3)
myfile.write("-")
myfile.write(class_)
myfile.write("\n")
myfile.close()
elif class_== ("class3"):
myfile=open("class3.txt","a")
myfile.write(name)
myfile.write("-")
myfile.write(score1)
myfile.write("-")
myfile.write(score2)
myfile.write("-")
myfile.write(score3)
myfile.write("-")
myfile.write(class_)
myfile.write("\n")
myfile.close()
else:
print("please eter a valid class name")
sorting = input("please enter the name of the class you wish to see\n")
if sorting ==("class1"):
myfile=open("class1.txt","r")
for line in myfile:
    class_name = myfile.readline()
    class_name.sort()
    print (class_name)
    myfile.close()

when i run the code in python it works until i ask which class i want to see when i select class 1 it always comes up saying line 51, in class_name.sort(reverse=True) AttributeError: 'str' object has no attribute 'sort' i dont know how to fix this.

anomoyus
  • 33
  • 1
  • 7

2 Answers2

0

You cannot use sort() on a string (it takes a list) like that, use:

>>> class_name = 'myclassname'
>>> class_name = ''.join(sorted(class_name))
>>> class_name
'aacelmmnssy'

if you wish to sort all the lines use:

lines = sorted(myfile.readlines())
Idos
  • 15,053
  • 14
  • 60
  • 75
0

Something like this:

with open(myfile, 'r') as r:
    for line in sorted(r):
        print(line, end='')
Sagar Waghmode
  • 767
  • 5
  • 16