当前位置: 首页 > 知识库问答 >
问题:

While在函数中循环?

齐兴运
2023-03-14

我对编码完全陌生,正在使用Python作为一个学校项目开发一个基于文本的游戏。用户必须通过键入“北”、“东”、“南”或“西”进入房间。如果方向无效,则应弹出错误消息,提示用户输入新方向。如果用户键入退出,游戏应该结束。

这个项目有一百万个问题,因为我发现我在编码方面很糟糕,但我想弄清楚的是,如果出现提示,如何让我的程序退出游戏。这是我的代码(它不是完整的代码,只是我到目前为止所拥有的代码。我试图一步一步地解决问题,这是我遇到的问题):

rooms = {
    'Great Hall': {'South': 'Bedroom'},
    'Bedroom': {'North': 'Great Hall', 'East': 'Cellar'},
    'Cellar': {'West': 'Bedroom'}
}


def main():
    current_room = 'Great Hall'
    user_input = None

    while user_input != "Quit":
        print('You are in the', current_room + '.')
        user_input = input('Where would you like to go?: ')
        current_room = rooms[current_room][user_input]
    else:
        print('Thanks for playing!')


main()

当我运行程序时,我得到这个错误消息:错误消息

如果有人能给我指出我需要解决的问题的正确方向,我将不胜感激!!

共有3个答案

庄星汉
2023-03-14

您可以使用walrus运算符以获得更简单的代码:

rooms = {
    'Great Hall': {'South': 'Bedroom'},
    'Bedroom': {'North': 'Great Hall', 'East': 'Cellar'},
    'Cellar': {'West': 'Bedroom'}
}

def main():
    current_room = 'Great Hall'

    while user_input:=input('Where would you like to go?: ') != 'Quit':
        print('You are in the ' + current_room + '.')
        current_room = rooms[current_room][user_input]
    print('Thanks for playing!')

main()
马绪
2023-03-14

试着把它放在if语句中?发生错误是因为它试图在循环回while语句之前找到要移动的正确房间。使用if会立即强制它首先确定退出。

rooms = {
    'Great Hall': {'South': 'Bedroom'},
    'Bedroom': {'North': 'Great Hall', 'East': 'Cellar'},
    'Cellar': {'West': 'Bedroom'}
}


def main():
    current_room = 'Great Hall'
    user_input = None

    while user_input != "Quit":
        print('You are in the', current_room + '.')
        user_input = input('Where would you like to go?: ')
        
        if user_input == "Quit":
            print('Thanks for playing!')
        else:
            current_room = rooms[current_room][user_input]
    

main()
欧照
2023-03-14

因此,当用户输入“退出”时,您可以在房间中找到它。您应该将退出条件移动到输入之后,而不是成为while条件的一部分:

rooms = {
    'Great Hall': {'South': 'Bedroom'},
    'Bedroom': {'North': 'Great Hall', 'East': 'Cellar'},
    'Cellar': {'West': 'Bedroom'}
}


def main():
    current_room = 'Great Hall'

    while True:
        print('You are in the', current_room + '.')
        user_input = input('Where would you like to go?: ')
        if user_input == "Quit":
            break
        current_room = rooms[current_room][user_input]
    print('Thanks for playing!')

main()

 类似资料:
  • 在js中,当在forEach函数中遍历arrayitems时,我遇到了一个问题。我只是有一个ID数组,其中一些ID不到10个字符,我想在开头用“0”填充这些字符。示例:在这种情况下,我想用填充最后一项。当然,它也可以在各种其他方式,但我只是不明白为什么它不起作用。 下面是我的代码:

  • 我用For创建了一个嵌套循环,这是程序代码和输出,然后我尝试了同时循环,得到了不同的结果 对于 虽然 请引导我。。谢谢

  • 问题内容: 在下面的代码中,我希望循环在+ + =时立即退出。但是,使用语句进行测试表明它一直持续到循环完成为止。我尝试过,然后在语句集中进行设置,但这会导致无限循环。我认为使用然后设置可能有效,但也可以一直运行到循环结束为止。什么是最优雅,最快的退出方式?谢谢。 问题答案: 该循环将只匹配条件时,当控制返回到它,即循环完全执行。因此,这就是即使满足条件也不会立即退出程序的原因。 但是,如果条件没

  • 我在php中工作,现在我正在将时循环应用于我的代码。我正在从数据库中获取数据。现在我必须将该数据应用于页面中的一个Div。 我的问题是"div类="项目活动"在循环中每次活动类都需要。现在我想改变它,就像在第一个循环过程之后,当第二个开始时,我想把那个div改变成这个"div类="项目"。 我对这个循环过程不太熟悉,所以我无法解决这个问题。需要帮助。谢谢

  • 只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。