这是我的代码:
something = "test";
当我运行此函数并输入4个选项(1,2,3,4)中的任何一个时,该函数总是跳过4 if / elif语句并执行else语句。我无法弄清楚我上面发布的代码有什么问题。我已经尝试在输入后打印变量“direction”和“distance”的值,并且它们都打印为正确的值。在此之后,尽管运行了if和elif语句,但仍然执行了else语句。任何帮助,将不胜感激。
答案 0 :(得分:2)
这里有两个问题。如其他答案所述,第一个是您将int
与字符串进行比较。因此,请使用input
包裹int
。第二个是你在最后一个作业中有==
,所以即使达到了这种情况,它也不会更新entity.x
的值。这段代码应该有效:
def moveEntity(entity):
print('forward=1')
print('backward=2')
print('left=3')
print('right=4')
direction = int(input('Where would you like to move?'))
distance = int(input('How many units?'))
if direction == 1:
entity.y = entity.y + distance
elif direction == 2:
entity.y = entity.y - distance
elif direction == 3:
entity.x = entity.x - distance
elif direction == 4:
entity.x = entity.x + distance
else:
print('invalid input')
答案 1 :(得分:1)
这是因为input
返回一个字符串,因此你需要将输入转换为整数以与那些数字进行比较,或者只是与字符串数字进行比较,还要注意你需要转换distance
在将其计算之前为整数:
def moveEntity(entity):
print('forward=1')
print('backward=2')
print('left=3')
print('right=4')
direction = input('Where would you like to move?')
while True:
try :
distance = int(input('How many units?'))
if direction == '1':
entity.y = entity.y + distance
elif direction == '2':
entity.y = entity.y - distance
elif direction == '3':
entity.x = entity.x - distance
elif direction == '4':
entity.x == entity.x + distance
#return value
except ValueError::
print('please enter a valid digit')
请注意,将输入转换为int
时,可能会引发值错误,因此,为了解决此问题,您可以使用try-except表达式。
答案 2 :(得分:0)
那是因为输入是一个字符串,但if循环中的值是整数。
为:
a = input()
if a == 1:
print("hello world")
好:
a = input()
if a == "1":
print("hello world")