Search code examples
pythonstringtypeerrordecodingnotsupportedexception

TypeError: decoding str is not supported


Im trying to make a attribute characteristic randomiser for my nephews board game and I'm trying to write the attributes to an external file so that he can use them later. when i am trying to write to the file it comes up with the error

speedE = str('Speed -', str(speed))
TypeError: decoding str is not supported

my code is adding the calculated attribute to the name of the attribute. I.E. ('Strength - ', strengthE) my code is ...

import random

char1 = open('Character1.txt', 'w')
strength = 10
strength += int(random.randint(1, 12) / random.randint(1,4))
speed = 10
speed += int(random.randint(1, 12) / random.randint(1,4))
speedE = str('Speed -', str(speed))
char1.write(speedE)
strengthE = str('Strength -', str(strength))
char1.write(strengthE)
print(char1)
char1.close()

char2 = open('Character2.txt', 'w')
strength2 = 10
strength2 += int(random.randint(1, 12) / random.randint(1,4))
speed2 = 10
speed += int(random.randint(1, 12) / random.randint(1,4))
speedE2 = str('Speed -', str(speed))
char2.write(speedE2)
strengthE2 = str('Strength -', str(strength))
char2.write(strengthE2)
print(char1)
char2.close()

im quite new to writing to external files and its not going too well aha. me and my nephew would really appreciate it if you could help, Thanks


Solution

  • Not sure about what you expect str('Speed -', str(speed)) to do.

    What you want is a string concat:

    speedE2 = 'Speed -' + str(speed)
    # replace other lines also
    

    You can also use string formatting and not worry about type casts:

    speedE2 = 'Speed -{}'.format(speed)