嘿,我继续在print语句的最后一行使用此代码获取此语法错误。我错过了一些明显的东西,还是我做错了。雷达()应该以18度为单位获得距离。然后Visual_radar()应该以半圈显示它们。如果您需要更多信息,请告诉我。
def radar():
measures = {}
angle = 18
servo(0)
for x in range(9):
servo(angle)
dist = distance()
measures[angle] = dist
angle += 18
for number in measures:
if number < min_distance:
print('Too close!', number)
can_move_forward = False
def visual_radar():
print """
%f %f
%f %f
%f %f
""" %(measures[90]), %(measures[108]),%(measures[72]),measures[126]),%(measures[54]))
radar()
visual_radar()
答案 0 :(得分:1)
多个%
是造成语法错误的原因。你似乎还有一个额外的括号。你也可以在你做它的时候摆脱多余的括号。
试试这个:
print("""
%f %f
%f %f
%f %f
""" % (measures[90], measures[108], measures[72] ,measures[126], measures[54]))
看起来您还没有完全理解格式化运算符的工作原理,您可能需要阅读this
另请注意,之后您将收到其他错误消息。您有6个格式字符串,但只有5个格式参数。它应该是这样的:
TypeError: not enough arguments for format string
答案 1 :(得分:1)
正如之前Verv所述,您的错误来自%
函数中最后"
之后的多个print
。
我建议你试试这对&#34; {} .format
&#34;在您的打印中或构造字符串变量时,路径等等。
根据我对%
的概括,因为你不必确切地知道变量的类型是什么。
为您提供一个如何使用它的简单示例:
a = [i**2 for i in xrange(4)]
print ("{}".format(a)) # ints
>>> [0, 1, 4, 9]
a.append("s") # string
a.append(2.4) # float
print "{}, {}".format(a[-1], a[-2])
>>> 's', 2.4
在此,您只需要在.format
上一次写入"
,并将{}
的数量与您在.format()
中放置的元素数量相匹配
我希望这会有用