python - 输入 'n' 时无法打印最终语句

标签 python python-3.x

我正在解决一个问题,该问题使用字典来存储州和首都,然后要求用户进行测验。当状态随机显示时,用户应该输入首都。用户会收到通知,判断其正确与否。然后用户被要求再次玩。当输入“n”时,它应该停止并给出正确和错误答案的数量。但是当输入“n”时循环继续播放,并且我无法执行最后一条语句。提前致谢。 为了简洁起见,并未显示所有州和首府。

def main():
    states_caps = {'Alabama' : 'Montgomery' ,'Alaska': 'Juneau', 'Arizona': 'Pheonix',  'Arkansas':   'Little Rock', 'California': 'Sacramento','Colorado': 'Denver', 'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee', 'Georgia': 'Atlanta', 'Hawaii': 'Honolulu'}

    print('Welcome to the Capitals of States quiz!')
    PlayAgain = "Y"
    correct_answer = 0
    incorrect_answer = 0
    while (PlayAgain =="Y"):
       for key in states_caps:
         print('\nThe state is:', key)
         capital = input('\nWhat is the capital?  ')
         if capital  == states_caps.get(key):
           print('You are correct!!')
           correct_answer +=1
         else:
           print('\nSorry, that is not correct.')
           print('The correct answer is,' , states_caps.get(key))
           incorrect_answer +=1
        PlayAgain = input("\nPlay again? (Y/N) ").upper()

    print('\nYou had', correct_answer, 'correct answers and',  incorrect_answer, 'incorrect answers.')

main()

最佳答案

要回答您的问题,这是因为您在询问用户是否想再次玩之前循环了所有状态。下面是一种解决方案(如果用户对“再次播放”回答 N,则循环按键并中断?

def main():
    states_caps = {'Alabama' : 'Montgomery' ,'Alaska': 'Juneau', 'Arizona': 'Pheonix',  'Arkansas':   'Little Rock', 'California': 'Sacramento','Colorado': 'Denver', 'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee', 'Georgia': 'Atlanta', 'Hawaii': 'Honolulu'}

    print('Welcome to the Capitals of States quiz!')
    PlayAgain = "Y"
    correct_answer = 0
    incorrect_answer = 0
    states = list(states_caps.keys())
    for state in states:
        print('\nThe state is:', state)
        capital = input('\nWhat is the capital?  ')
        if capital  == states_caps.get(state):
            print('You are correct!!')
            correct_answer +=1
        else:
            print('\nSorry, that is not correct.')
            print('The correct answer is,' , states_caps.get(state))
            incorrect_answer +=1
        PlayAgain = input("\nPlay again? (Y/N) ").upper()
        if PlayAgain == 'N':
            break


    print('\nYou had', correct_answer, 'correct answers and',  incorrect_answer, 'incorrect answers.')

main()

关于python - 输入 'n' 时无法打印最终语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532031/

相关文章:

python - Windows 上这 4 种不同类型的 Python shebangs 有什么区别?

python - numpy.tensordot 命令如何工作?此命令中对轴求和的含义是什么?

python-3.x - Python Adal - 无法使用访问 token 检索 Outlook 消息

python - 无法在 for 循环中使用 datetime.strptime()

java - 未知公式的包装函数

获取序列的第一个和最后一个元素的 Pythonic 方法

python - 按列值将 CSV 文件分类为不同的 CSV

python - 多处理队列与池

python - 生成器表达式和生成器函数的区别

python - Django 重定向到点击页面