TypeError: decoding str is not supported
Asked Answered
H

1

14

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

Habergeon answered 23/10, 2016 at 23:25 Comment(0)
Y
12

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)
Yeanling answered 23/10, 2016 at 23:27 Comment(2)
hi i tried this but it gave me the error 'char1.write(speedE) TypeError: write() argument must be str, not tuple'Habergeon
There's a trailing comma somewhere on that line. Remove it.Yeanling

© 2022 - 2024 — McMap. All rights reserved.