파일에서 한 줄을 가져 와서 출력 한 다음 답변을 입력하고 다른 줄과 일치하는 코드를 'correct '. 그 부분은 작동하지만 우리가 네 번째 질문에 도달했을 때 그것은 단지 반복을 계속 한 다음 오류를줍니다. 텍스트 파일에서 줄은 '/'로 구분됩니다.파이썬에서 if 문으로 파일을 다시 호출하는 방법
슬래시가 stuff./When 헤이스팅스 전투였다 구분 :
def Q():
a = 1
b = 2
while True:
file = open("AA.txt", "r")
for line in file:
sec=line.split("/")
print(sec[a])
answer = input("Type your answer: ").strip()
if answer == sec[b].strip() and b >8:
print ("Correct!")
a = a + 2
b = b + 2
elif answer == sec[b].strip() and b ==8:
print ("Done.")
break
else:
print ("Wrong it's " + sec[b])
a = a + 2
b = b + 2
file.close()
Q()
이 텍스트 파일은? 1066, 1078 또는 1088/1066/런던의 위대한 불은 언제 있었습니까? 1777 또는 1666/1666/헨리 8 세는 몇 아내가 있습니까? 8 또는 6/6 월스트리트 크래시는 언제 있었습니까? 1929 또는 1933/1929/
'=='은 비교를위한 것이며'= '는 할당을위한 것입니다. 'switch == True' 라인은 아무 것도하지 않습니다. 아마도'switch = True'를 의미했을 것입니다. – smarx
@smarx가 말한 것에 덧붙여, 루프를 빠져 나오기 위해서'break'를 사용할 수 있습니다. 대신에'switch' 변수를 없애십시오 ('while True' 대신에). –
때로는 문자열을 처리 할 때 꼬리말 등이있는 경우를 대비하여 비교하기 전에 맹목적으로 모든 공백을 제거하는 것이 좋습니다. 그래서,'대답 = 입력 ("대답 입력 :") .strip()'과'대답 == 초 [b] .strip() :'을 대신하십시오. 어쩌면 그게 전부 일거야. – Arne