Reputation: 15
I am making a quiz in the style of 20 Questions. It uses a text file to create a dictionary with codes relating to answers. At the moment it only has 5 questions which is no where near enough to be accurate with 'guesses' but already it is looking messy and hard to understand
CODES.txt Example Contents:
a1000,A Book
a1111,A Saucepan
Code:
File = open("CODES.txt","r")
CODES = { }
for line in File:
x = line.split(",")
a = x[0]
b = x[1]
c = len(b)-1
b = b[0:c]
CODES[a] = b
print("Think of anything: \n")
Q1 = str(input("Is it a) An Object, b) A Person, c) A Film: "))
if Q1 == "a":
Q2 = input("Is it hard: ")
if Q2 == "0":
Q3 = input("Is it light: ")
if Q3 == "0":
Q4 = input("Is it smaller than your head: ")
if Q4 == "0":
Q5 = input("Is it square: ")
elif Q4 == "1":
Q5 = input("Is it circular: ")
elif Q3 == "1":
Q4 = input("Is it bigger than your head: ")
if Q4 == "0":
Q5 = input("Is it square: ")
elif Q4 == "1":
Q5 = input("Is it circular: ")
elif Q2 == "1":
Q3 = input("Is it heavy: ")
if Q3 == "0":
Q4 = input("Is it smaller than your head: ")
if Q4 == "0":
Q5 = input("Is it square: ")
elif Q4 == "1":
Q5 = input("Is it circular: ")
elif Q3 == "1":
Q4 = input("Is it bigger than your head: ")
if Q4 == "0":
Q5 = input("Is it square: ")
elif Q4 == "1":
Q5 = input("Is it circular: ")
CCODE = str(Q1+Q2+Q3+Q4+Q5)
if CCODE in CODES:
print("You are thinking of " + CODES[CCODE])
else:
NV = str(input("You have outsmarted me. What were you thinking of: "))
File = open("CODES.txt","a")
File.write((CCODE+","+NV+"\n"))
File.close()
How would i make the question segment, the If-Statements easier to read/understand. Currently i have loads of embedded ones and it only consists of 5 questions each with 2/3 answers.
Upvotes: 0
Views: 169
Reputation: 915
I will try to give you some thoughts but not solve your problem directly:
Also there is the possibility to return functions from other functions as everything is an object in Python.
For example Q4 = input("Is it smaller than your head: ")
could be turned into a statement like
obj_size = ask_size()
with outputs "small"
, "big"
.
I hope that helps you :)
Upvotes: 1