簡體   English   中英

類型錯誤:不支持 Pow 的操作數類型:第 15 行的“list”和“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM