When I am taking a user input of the num variable, I am getting a key error. But if I assign a value to that variable, then it's working fine. Why am I getting a key error for taking a user input of the key?
f = open("GUTINDEX.ALL", "r", encoding="utf-8")
string = f.read()
f.close()
bookList = string.split('\n\n')
etextDict = {}
x = len(bookList)
for book in bookList:
etextDict[x] = book
x -= 1
num = input('Search by ETEXT NO:')
print(etextDict[num])
num=1
print(etextDict[num])
The input is read as a string, while on your use case (when working), num is an integer. Just convert the string to integer:
f = open("GUTINDEX.ALL", "r", encoding="utf-8")
string = f.read()
f.close()
bookList = string.split('\n\n')
etextDict = {}
x = len(bookList)
for book in bookList:
etextDict[x] = book
x -= 1
num = input('Search by ETEXT NO:')
print(etextDict[int(num)]) # <- changed this line
num=1
print(etextDict[num])