<p>你的代码看起来肯定会复制图片右下1/4。。。为了制作一个三角形的部分(或者只是一个有一个角度的部分,如果我理解你的问题正确)你需要减少X最大值每次通过。。。类似于:</p>
<pre><code>def copyPic():
file=pickAFile()
oldPic=makePicture(file)
newPic=makeEmptyPicture(getWidth(oldPic),getHeight(oldPic))
xstart=getWidth(oldPic)/2
ystart=getHeight(oldPic)/2
# The next line gets the max value x can be (width of pic)
xmax = getWidth(oldPic)
for y in range(ystart,getHeight(oldPic)):
# Now loop from the middle (xstart) to the end (xmax)
for x in range(xstart, xmax):
oldPixel=getPixel(oldPic,x,y)
colour=getColor(oldPixel)
newPixel=getPixel(newPic,x,y)
setColor(newPixel,colour)
# Now the x-loop has finished for this line (this value of y)
# so reduce xmax by 10 (or whatever value) ready for the next line
xmax = xmax - 10
# Then you should do some checking in your code to ensure
# xmax is not < xstart... here is something crude that should work
if xmax < xstart:
xmax = xstart
explore(newPic)
</code></pre>
<p>我想你的代码会像这样:</p>
<pre><code>+------------+
| 1 2 |
| |
| 3 4 |
| |
+------------+
</code></pre>
<p>给你这个:</p>
<pre><code>+-----+
| 4 |
| |
+-----+
</code></pre>
<p>因为你的X环总是一样长</p>
<p>如图所示每次减少x,您应该得到如下结果:</p>
<pre><code>+-----+
| 4 /
| /
+-
</code></pre>
<p>这是不是很好的编码,我可以重写整个事情。。。但如果您只是在学习python,那么至少我对您的代码所做的修改应该能够很好地处理您已经拥有的内容,并且应该很容易理解。我希望这会有帮助,如果你需要的话,可以随时要求澄清。</p>
<p>干杯</p>
<p>附言:我看到你问了两次这个问题-你不应该问同样的问题两次,因为它会把答案分开,而且会让以后人们很难找到这样的答案。。。</p>