使用任何程序包的2D绘图仪无用

时间:2019-05-16 23:31:05

标签: python-3.x

说我们有10x10像素(作为坐标),我们想绘制数据。 在使用10x10之前,我开始使用3x3。该项目的要点是说我们有坐标(1,2),我们从这一点开始。我想将坐标设置为字典。然后我用了两个循环。我的代码在下面

我收到错误keyerror:0

文件“ /home/caglar/temp.py”,第6行,在     如果dict [i]!= j:

KeyError:0

dict={1:3,2:1,3:1}
xarr=[]
yarr=[]
for i in range(0,3):
    for j in range(0,3): 
        if dict[i]!=j:
            xarr.append("") and yarr.append("")
            j+=1
        else:
            xarr[i].append("*") and yarr[j].append("*")
    i+=1
print(xarr)

1 个答案:

答案 0 :(得分:0)

您的字典dict={1:3,2:1,3:1}具有键123。但是,您使用dict[i] != j访问它。 i in range(0,3)的意思是“循环遍历一系列i值,这些值从0开始到在之前 3结束。因此它将通过012。这意味着,当它尝试访问字典中的键0时,找不到它,因此引发KeyError,表明它找不到0

与您的问题无关,您那里还有一些不太奇怪的代码行:

  • for i in range(0,3)遍历i的值,因此您不必每次都执行i += 1。在您的代码i += 1j += 1中实际上什么也没做。
  • and是布尔运算符。它评估两边的布尔语句,并告诉您两者是否为真。几乎所有内容都可以解释为布尔值语句,因此不会引发错误。但是,当您执行xarr.append("") and yarr.append("")时,是在告诉它评估每个附加项,将它们解释为布尔值,然后返回xarr.append("") and yarr.append(")的布尔值。为了简单地做这两个事情,您可以将每个表达式放在自己的行上:
xarr.append("")
yarr.append("")
  • xarr.append("")将一个空字符串附加到xarr数组中。如果您从xarr = []开始,然后再进行xarr.append(""),则最终会得到[""]。如果再次执行此操作,则会得到["", ""],依此类推。当您执行xarr[i].append("*")时,是说“访问xarr中的第i个项目,然后将"*"附加到该项目中”。但是,由于xarr中的项目不是数组,因此您无法追加到它们,因此会出错。