python - 如何让 mov 功能正常工作
问题描述
所以,我有这个输入命令,它应该给用户无提示的输入,如果它是一个无效的命令来输出“输入”是一个无效的命令。但是,向北、向西等是一个有效的命令,但代码无法识别它。请帮助:)
顺便说一句,播放器是一个模块,其中有一个用于移动播放器位置的类。
代码:
import world, tiles
from player import Player
game = "play"
while game == "play":
x = input()
y = " is not a valid command"
string = x + y
if x == "go north":
Player.go_north
if x == "go south":
Player.go_south
if x == "go east":
Player.go_east
if x == "go west":
Player.go_west
if x == "pick up":
print("pick up what?")
else:
print(string)
解决方案
似乎有几件事可能是错误的。首先,Player.go_*
被作为属性引用,但我希望它们在做某事时应该是函数?从技术上讲,我猜它们可能是属性,但这感觉像是使用它们的错误方式。
其次,我认为您的 if/else 逻辑不是您想要的。您检查每个方向,但即使成功,它也会下降到下一个if
语句。所以在最后一次检查时会发生什么,如果它不是“拾取”,它总是会打印出无效的命令字符串。您要么希望每个条件都成为 a 的一部分,if/elif/else
以便一旦遇到一个,它就会跳过其他条件,或者您需要continue
在任何成功检查后进行 a,因为如果找到匹配项,您只想继续循环。
所以像:
import world, tiles
from player import Player
player = Player()
game = "play"
while game == "play":
x = input()
y = " is not a valid command"
string = x + y
if x == "go north":
player.go_north()
elif x == "go south":
player.go_south()
elif x == "go east":
player.go_east()
elif x == "go west":
player.go_west()
elif x == "pick up":
print("pick up what?")
else:
print(string)
推荐阅读
- javascript - 我在 Rails 上使用什么 JS 运行时?
- python - 如何对文本文件中的数字进行分类?
- amazon-ec2 - Cassandra 备份还原不显示数据
- ruby-on-rails - 在 `show`/`index` 页面中使用其他方法
- c++ - 如何在没有 std:whatever 的情况下强制使用 C++ 移动运算符
- jquery - Laravel - 在编辑表单中显示日期时间值
- jquery - jQuery 脚本多次附加并与 DevExpress 脚本混合
- objective-c - 向上/向下拖动另一个 UIViewController iOS
- assembly - 在 REP MOVSW 之前 PUSH CS / POP DS 的目的是什么?
- oracle - Eclipselink主键唯一约束问题