question () 함수 내에서 "counting ()"함수를 어떻게 호출합니까? 따라서 퀴즈 게임에 질문이 몇 개 있더라도 한 번만 실행되도록 지정하면됩니다. 시도했지만 아무것도 작동하지 않습니다.
제발 도와주세요, 감사합니다.
추신 내 질문은 스웨덴어에 관한 것이지만 중요하지 않습니다.
from time import sleep
def main():
option()
def start_menu():
"""This will display the main menu"""
print("*"*40)
print("MAIN MENU")
print("*"*40)
print("1. Start the quiz")
print("2. Statistics")
print("3. Exit game")
def option():
"""This should get user input """
while True:
start_menu()
option= input("Write your choice here [1-3]")
if option=="1":
qustion_game()
elif option=="2":
statistics()
elif option=="3":
game_over()
return
else:
print("he selection you specified was not valid, [1-3]")
def qustion_game():
"""Frågesporten"""
print("♡"*40)
print("Welcome to this quiz ")
print("♡"*40)
print("")
sleep(1)
question("Annika hade 4 barn, den första hette januari, den andra hette februari, tredje hette april, vad hette den fjärde.?", "vad")
print("")
counting()
sleep(1)
print("♡"*40)
question("Vem får lön utan att jobba en enda dag i hela sitt liv?", "nattvakt" )
print("")
counting()
sleep(1)
print("♡"*40)
question("Lägg till 1000 till 40. Lägg till 1000. Lägg till 30. Lägg till 1000 igen. Lägg nu till 20. Lägg till 1000 igen.Lägg nu till 10.Vad är svaret?", "4100")
print("")
counting()
def question(quiz,quiz_answer):
"""Outputen av frågor"""
user_guess=input(quiz)
while user_guess != quiz_answer:
print("Sorry, try again...")
fail_answer()
user_guess=input(quiz)
print("")
print("*"*40)
print("Correct")
def statistics():
"""Provides the user with statistics on how many questions they have answered and how many errors they have made """
print("Statistics")
print("*"*40)
print("You have totally answered " + str(answered) +" questions")
print("Off " +str(answered)+ " answer, have you answered incorrectly on " + str(fail))
def fail_answer():
"""prints how many questions the user has answered"""
global answered
answered = answered + 1
def counting():
"""prints how many errors the user has made"""
global fail
fail = fail + 1
def game_over():
"""Exit the game"""
print ("Game over, see you next time")
fail = 0
answered = 0
main()
이 문제를 해결하는 가장 좋은 방법은 내부 상태를 유지할 수있는 클래스를 이용하는 것입니다. 그런 다음 원하는만큼 함수를 호출 할 수 있으며 변수의 내부 상태를 유지합니다. 그런 다음 사용자가 질문에 실패 할 때 마다 class.failed_answer () 를 호출 할 수 있으며 , 질문이 몇 개 있어도 변수를 재설정하지 않고 항상 그 시점부터 계속됩니다.
작성자가 의견에서 질문 한대로 전체 코드는 다음과 같습니다.
from time import sleep
class Statistics:
def __init__(self):
self.answered = 0
self.failed = 0
def counting(self):
self.answered += 1
def failed_answer(self):
self.failed += 1
def main():
option()
def start_menu():
"""This will display the main menu"""
print("*"*40)
print("MAIN MENU")
print("*"*40)
print("1. Start the quiz")
print("2. Statistics")
print("3. Exit game")
def option():
"""This should get user input """
stats = Statistics()
while True:
start_menu()
option= input("Write your choice here [1-3]")
if option=="1":
qustion_game(stats)
elif option=="2":
statistics(stats)
elif option=="3":
game_over()
return
else:
print("The selection you specified was not valid, [1-3]")
def qustion_game(stats):
"""Frågesporten"""
print("♡"*40)
print("Welcome to this quiz ")
print("♡"*40)
print("")
sleep(1)
question("Annika hade 4 barn, den första hette januari, den andra hette februari, tredje hette april, vad hette den fjärde.?", "vad", stats)
print("")
sleep(1)
print("♡"*40)
question("Vem får lön utan att jobba en enda dag i hela sitt liv?", "nattvakt", stats)
print("")
sleep(1)
print("♡"*40)
question("Lägg till 1000 till 40. Lägg till 1000. Lägg till 30. Lägg till 1000 igen. Lägg nu till 20. Lägg till 1000 igen.Lägg nu till 10.Vad är svaret?", "4100", stats)
print("")
def question(quiz, quiz_answer, stats):
"""Outputen av frågor"""
user_guess=input(quiz)
stats.counting()
while user_guess != quiz_answer:
print("Sorry, try again...")
stats.failed_answer()
user_guess=input(quiz)
print("")
print("*"*40)
print("Correct")
def statistics(stats):
"""Provides the user with statistics on how many questions they have answered and how many errors they have made """
print("Statistics")
print("*"*40)
print("You have totally answered %d questions" %stats.answered)
print("Off %d answers have you answered incorrectly on %d" %(stats.answered, stats.failed))
def game_over():
"""Exit the game"""
print ("Game over, see you next time")
if __name__ == '__main__':
main()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다