Stack Overflow Asked by hamstercoding on January 5, 2022
I tried using int()
and str()
but it gave me an ValueError
. I’m making a RPG where you can save and load your data using text files, and i want it to take data from a previous game (in a text file, already achieved) and set the variables from specific line numbers, so you get your previous data.
My code is:
f = open(name+".txt",'r')
enter = f.readline()
y = enter[0]
hp = enter[1]
coins = enter[2]
status = enter[3]
y2 = enter[4]
y3 = enter[5]
energy = enter[6]
stamina = enter[7]
item1 = enter[8]
item2 = enter[9]
item3 = enter[10]
equipped = enter[11]
firstime = enter[12]
armorpoint1 = enter[13]
armorpoint2 = enter[14]
armorpoints = enter[15]
upgradepoint1 = enter[16]
upgradepoint2 = enter[17]
firstime3 = enter[18]
firstime4 = enter[19]
part2 = enter[20]
receptionist = enter[21]
unlocklist = enter[22]
armorlist = enter[23]
heal1 = enter[24]
heal2 = enter[25]
heal3 = enter[26]
unlocked = enter[27]
unlocked2 = enter[28]
f.close()
(I didn’t put in global because it would be too long.)
When I run this, I get an error saying the index is out of range. The code is on https://repl.it/@HamsterCoding/Screen-Testing#screen.py if you want to see it better.
You're getting an index out of bounds because readline() only reads the one line. You should use readlines() to get an array of all the lines in your text file.
File:
duck
1
c
1.2
Code:
f = open("duck.txt")
enter = f.readlines() # Changed from readline to readlines
y = enter[0].replace("n", "") # .replace replaces all newlines ("n") with empty strings
hp = enter[1].replace("n", "")
coins = enter[2].replace("n", "")
status = enter[3].replace("n", "")
print(enter)
print(y)
print(int(hp)) # cast str to int
print(coins)
print(float(status)) # cast str to float
Output:
['duckn', '1n', 'cn', '1.2']
duck
1 # int
c
1.2 # float
Answered by burntchowmein on January 5, 2022
Let's say you have the following txt-file:
1
word
2.5
The first issue you face is that the default type of the value from the text file is going to be string. Therefore, a classification of the content of the file would help you. The following piece of code will achieve this:
f = open('1.txt', 'r')
val_int = []
val_float = []
val_str = []
for i, line in enumerate(f):
try:
val = float(line)
if val.is_integer():
val_int.append((i,int(val)))
else:
val_float.append((i,val))
except:
val_str.append((i,line.replace('n','')))
f.close()
print(val_int) # OUTCOME: [(0, 1)]
print(val_float) # OUTCOME: [(2, 2.5)]
print(val_str) # OUTCOME: [(1,'word')]
The tuple to maintain the index of the line for future use.
Answered by Baraa on January 5, 2022
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP