Python 容易出错的事情
英语不是我的强项,请考虑一下 我想做的是用“~”符号做一个3x3,4x4或5x5矩阵,它会被“X”替换3次 根据x和y输入给定的坐标,附加在s=[] 例如,如果我有一个矩阵3x3Python 容易出错的事情,python,Python,英语不是我的强项,请考虑一下 我想做的是用“~”符号做一个3x3,4x4或5x5矩阵,它会被“X”替换3次 根据x和y输入给定的坐标,附加在s=[] 例如,如果我有一个矩阵3x3 ~~~ ~~~ ~~~ 和坐标(0,0) 结果应该是: X~~ ~~~ ~~~ 虽然听起来很简单,但对我来说仍然不容易,即使我的代码看起来合乎逻辑,我也会遇到问题 > IndexError: list index out of range 这是我的代码: a = [] n=0 while n<3 o
~~~
~~~
~~~
和坐标(0,0)
结果应该是:
X~~
~~~
~~~
虽然听起来很简单,但对我来说仍然不容易,即使我的代码看起来合乎逻辑,我也会遇到问题
> IndexError: list index out of range
这是我的代码:
a = []
n=0
while n<3 or n>5:
n=int(raw_input("type matrix: "))
for i in range (n):
for j in range (n):
print "~",
print "\n",
def zdruzi(a):
for row in a:
print " ".join(row)
zdruzi(a)
s = []
for i in range(3):
x=int(raw_input("x: "))
y=int(raw_input("y: "))
s.append(int(x))
s.append(int(y))
a[int(x)][int(y)]="X"
if (x<0) or (x>(n-1)):
print "not good"
break
print a
a=[]
n=0
而n5:
n=int(原始输入(“类型矩阵:”)
对于范围(n)中的i:
对于范围(n)内的j:
打印“~”,
打印“\n”,
德夫兹德鲁兹(a):
对于a中的行:
打印“”连接(行)
zdruzi(a)
s=[]
对于范围(3)中的i:
x=int(原始输入(“x:”)
y=int(原始输入(“y:”)
s、 附加(int(x))
s、 附加(int(y))
a[int(x)][int(y)]=“x”
如果(x(n-1)):
打印“不好”
打破
打印
您尚未预先填充a
。阅读n
后,执行以下操作:
a = [ [ '~' for _ in range(n) ] for _ in range(n) ]
您尚未预填充
a
。阅读n
后,执行以下操作:
a = [ [ '~' for _ in range(n) ] for _ in range(n) ]
由于
x
和y
是调用int(…)
的产物,因此不需要调用int(x)
或int(y)
。直接使用x
和y
。是的,我知道了,我做了一些多余的int(…)调用。但是我用x和y直接测试了很多次,仍然得到相同的错误。冗余调用不是问题的原因。我只是指出它们作为一个注释。另外,你应该在使用之前测试x
是否在范围内,而不是在使用之后。因为x
和y
是调用int(…)
的产物,你不需要调用int(x)
或int(y)
。直接使用x
和y
。是的,我知道了,我做了一些多余的int(…)调用。但是我用x和y直接测试了很多次,仍然得到相同的错误。冗余调用不是问题的原因。我只是指出它们作为一个注释。另外,你应该在使用之前测试x
是否在范围内,而不是在使用之后。是的(除了i18n blahblahblah),但是由于字符串是不可变的,所以你不需要为内部循环使用特殊的大小写。@IgnacioVazquez Abrams:你是说我应该编写['~']*n
?我想我可以,但是上面的感觉更正常。我不是说你应该有,我只是说你可以有。嗨。这很有帮助。但我们还没有完全做到。ATM它只在A中显示“x”,对于最后一系列的x和y。我该如何做才能在我的a=[]中显示3个x?@Acadeniaan:请仔细阅读我的答案。是的(除了i18n blahblahblah),但由于字符串是不可变的,所以内部循环不需要特殊的大小写。@IgnacioVazquez Abrams:你是说我应该写['~']*n
?我想我可以,但是上面的感觉更正常。我不是说你应该有,我只是说你可以有。嗨。这很有帮助。但我们还没有完全做到。ATM它只在A中显示“x”,对于最后一系列的x和y。我该如何做才能在我的a=[]中显示3个x?@Acadeniaan:请仔细阅读我的答案。