![](/img/trans.png)
[英]TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'
[英]TypeError: unsupported operand type(s) for Pow: 'list' and 'int' on line 15
我想要做的就是讓我的循環使用距離公式每秒向下移動烏龜。 但是,每次我嘗試使用該公式時,都會出現此錯誤。 有誰知道我哪里出錯了?
import turtle
wn = turtle.Screen()
tony = turtle.Turtle()
tony.shape("turtle")
tony.pensize(5)
tony.up()
tony.left(90)
tony.forward(100)
tony.left(180)
tony.down()
gravity= float(10.3)
for i in [1,2,3,4,5,6,7,8,9,10]:
tony.stamp()
time = range(1,10,1)
distance = float((gravity/2)*((time**2)-((time-1)**2)))
tony.forward(distance)
range
函數返回一個列表。 您正在存儲此列表time
,然后嘗試將其用作time ** 2
(時間平方)的基礎。 也許您想將時間設置為i
的值?
你的變量time = range(1, 10, 1)
等價於time = [1, 2, 3, 4, 5, 6, 7, 8, 9]
所以試圖對一個列表進行平方,如distance = float((gravity/2)*((time**2)-((time-1)**2)))
未定義。
如果您的目的是對列表中的每個元素進行平方(即[1, 4, 9, 16, ...]
那么您嘗試做的正式稱為map 。幸運的是,python 有一個內置的 map 。
f = lambda x: x**2
map(f, list)
上面我使用了一個 lambda,它是一個內聯函數。 你可以輕松地(稍微少一點)(稍微更符合 PEP8):
def f(x):
return x ** 2
map(f, list)
另外:您也從列表中減去了 1。 我將讓您使用上述工具找出解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.