0

ねえ、これはここでの私の 2 番目の投稿です。私は Uni で学んでいる間、Python は初めてです。これは、「辞書からキーを自動的に呼び出す」という最初の質問から続いています。

だから私はもともとこれをすべて同じforループ内に設定していましたが、エラーが発生しました

The error was:__setitem__
Attribute not found.
You are trying to access a part of the object that doesn't exist.

dict と keys について間違った考えを持っていますか? 私は、pictureCount=3 の場合、for ステートメントを 3 回実行し、picture[1]、picture[2]、picture[3] 変数を作成すると考えました。最初のループを通過しているように見えますが、画像 [2] に到達するとエラーが発生します。私の考えでは、絵は存在しない [2] 唯一の絵 [1] が何度も作成されたということです。他に必要なコードがある場合は、お知らせください。

      for p in range(1,pictureCount+1):
        picture[p]=makePicture(pickAFile())

      for p in range(1,pictureCount+1):
        width[p]=getWidth(picture[p])
         height[p]=getHeight(picture[p])
         totalWidth=totalWidth+width[p]
         height=getHeight(picture[p])
         if height > totalHeight:
           totalHeight=height

これが完全なコードです。

    def comicStrip():
      picture={}
      width={}
      height={}
      totalWidth=0
      totalHeight=0
      pixelCount=0
      loopCounter=0
      pictureCount=requestInteger("How many pictures do you want in the comic strip?(1-4)")
      while pictureCount <1 or pictureCount >4:     
        pictureCount=requestInteger("How many pictures do you want in the comic strip?(1-4)")

      for p in range(1,pictureCount+1):
        picture[p]=makePicture(pickAFile())

      for p in range(1,pictureCount+1):
        width[p]=getWidth(picture[p])
        height[p]=getHeight(picture[p])
        totalWidth=totalWidth+width[p]
        height=getHeight(picture[p])
        if height > totalHeight:
          totalHeight=height
      cStrip=makeEmptyPicture(totalWidth, totalHeight)
      pixelCount=0

      while loopCounter < pictureCount:
        sourceX=0
        for targetX in range(pixelCount,width[p]):
          sourceY=0
          for targetY in range(0,height[p]):
            color = getColor(getPixel(picture[1],sourceX,sourceY))
            setColor(getPixel(cStrip,targetX,targetY),color)
            sourceY=sourceY+1
            pixelCount=pixelCount+1
          sourceX=sourceX+1
        addRectFilled(cStrip,0,0,p1Width,20,white)
        addRect(cStrip,0,0,p1Width,20)
        addRect(cStrip,0,0,p1Width,p1Height)
        caption=requestString("Enter the caption for this picture.") 
        addText(cStrip,1,19,str(caption))
        loopCounter=loopCounter+1

コピーして貼り付けた後に再調整する必要があるため、間隔が正しいと確信しています。

4

1 に答える 1

0

コードのエラーはオンラインではありません

height[p]=getHeight(picture[p])

2行下です

height=getHeight(picture[p])

この行は次の行に置き換える必要があります

totalHeight = getHeight(picture[p]).

私はPythonの専門家ではありませんが、forループの最初の繰り返しの後、インタープリターが高さを配列(またはdict)から通常の変数に変更するように見えます。2 番目の反復行height[p]=getHeight(picture[p])で要素にアクセスしようとしますpが、存在しません。

次のコード JES を試してみましたが、同じエラーが発生しました

array1 ={}
array1[1] = 5
array1 = 7
array1[1] = 8

print array1[1]
于 2014-02-27T08:41:11.980 に答える