为了账号安全,请及时绑定邮箱和手机立即绑定

如果输入的输入被视为“无效”,则尝试继续要求输入

如果输入的输入被视为“无效”,则尝试继续要求输入

蓝山帝景 2021-07-30 10:07:30
这是我为 CS 课程制作的文本冒险游戏的一小部分。您正在探索一所房子,并通过告诉游戏您要向北、向南、向东或向西移动来导航它。所以我想添加一些东西来告诉你当你输入了一个无效的输入时,如果你说拼错了像 Nroth、Suoth、Eas 或 West 这样的词之一。这些只是示例,但希望您知道我的意思,如果它不完全匹配北、南、东或西。我将如何在这部分代码中做到这一点?我举了一个我想输出的错误的例子,如果你拼写错误,上面写着“elif room ==”porch”,但它应该继续询问你想去哪个方向,即使你得到那个错误,因为截至现在它会继续询问您想去哪个方向,无论您输入什么,它都不会输出根据您进入的房间应该说的文本。def pickRoom(direction, room):    if(direction == "quit") or (direction == "exit"):        print("Better luck next time!")        return "Exit"    elif room == "Porch":        if direction == "North":            return "Pantry"        else:            print("That is not a valid entry!")    elif room == "Pantry":        if direction == "North":            return "Kitchen"        elif direction == "East":            return "DiningRoom"    elif room == "DiningRoom":        if direction == "West":            return "Pantry"    elif room == "Kitchen":        if direction == "West":            return "LivingRoom"        elif direction == "East":            return "Bedroom"    elif room ==  "Bedroom":        if direction == "West":            return "Kitchen"    elif room == "LivingRoom":        if direction == "West":            return "Bathroom"        elif direction == "North":            return "Stairs"    elif room == "Bathroom":        if direction == "East":            return "LivingRoom"    elif room == "Stairs":        if direction == "South":            return "Bar"    elif room == "Bar":        if direction == "East":            return "Shop"    elif room == "Shop":        if direction == "North":            return "Closet"        elif direction == "South":            return "Storage"    elif room == "Storage":        if direction == "North":            return "Shop"    elif room == "Closet":        if direction == "South":            return "Shop"如果您需要更大的代码部分甚至整个 .py 文件来弄清楚,请告诉我,谢谢。
查看完整描述

3 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

为了保持在显示的代码部分,根据要求,只需在最后添加


else:

    print("Sorry, that does not make sense to me.")

    return room

通过这种方式,您可以解决当前问题,即在没有任何编程选项与输入匹配的情况下,不可预测的值将重新调整为新的当前房间。通过room在这种情况下返回参数,存储当前房间的变量将继续使用有效房间(当前房间)。


当返回一个不可预测的值时,它很可能不是正确的房间名称之一,它需要这样才能保持逻辑结构正常运行。一旦 room 变量包含垃圾,它就再也无法匹配任何选项,因此不再输出任何有意义的内容。


作为防止房间最终出现垃圾的额外预防措施(由任意数量的可能事故之一造成),您可以检查房间是否是现有房间之一,否则将其重置为默认值 - 或退出并显示错误消息

“哎呀,意外传送到未知空间,下次地球见。”


查看完整回答
反对 回复 2021-08-03
?
桃花长相依

TA贡献1860条经验 获得超8个赞

elif room.lower() in ('perch','peach','pooch'):

你可以只列出一个你想指出的所有拼写错误的大列表。如果他们做出的选择不正确,请检查他们输入的值是否在此列表中。


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信