我目前正在使用平铺地图为pygame中的游戏制作地图编辑器.该级别由以下结构中的块构建(尽管更大):
level1 = (
(1,1,1,1,1,1)
(1,0,0,0,0,1)
(1,0,0,0,0,1)
(1,0,0,0,0,1)
(1,0,0,0,0,1)
(1,1,1,1,1,1))
Run Code Online (Sandbox Code Playgroud)
其中"1"是一个墙,而"0"是一个空的空间.
以下代码基本上是处理块类型更改的代码:
clicked = pygame.mouse.get_pressed()
if clicked[0] == 1:
currLevel[((mousey+cameraY)/60)][((mousex+cameraX)/60)] = 1
Run Code Online (Sandbox Code Playgroud)
但由于级别存储在元组中,我无法更改不同块的值.如何以简单的方式更改关卡中的不同值?
我有一个包含子列表的列表.我想打印所有长度等于3的子列表.
我在python中执行以下操作:
for x in values[:]:
if len(x)==3:
print x
Run Code Online (Sandbox Code Playgroud)
values是原始列表.上面的代码是否打印了每个长度等于3的子列表x?我想只显示length==3一次的子列表.
问题已经解决了.问题出在Eclipse编辑器上.我不明白原因,但是当我运行循环时它只显示我列表的一半.
我有必要在Eclipse中更改任何设置吗?
有没有办法在PyCharm或Python中将变量声明为未使用,因此您可以明确告诉编译器不要发出警告?
我不是在讨论为程序员命名未使用的变量的惯例(通常命名为"_"或"__"),而是一个显式地将变量标记为编译器未使用的选项,例如在循环中.我也不仅仅想要禁用检查.
我听说你可以在PyDev中通过使用"unused"开始变量名来做到这一点,我认为这也可能存在于PyCharm中,但还是找不到它.
Stack Overflow 上有很多关于这个一般主题的问答,但它们要么质量很差(通常是初学者的调试问题暗示的),要么以其他方式错过了目标(通常是不够通用)。至少有两种极其常见的方法会使幼稚的代码出错,初学者从关于循环的规范中获益更多,而不是从将问题作为拼写错误或关于打印所需内容的规范中获益。所以这是我尝试将所有相关信息放在同一个地方。
假设我有一些简单的代码,可以对一个值进行计算x并将其分配给y:
y = x + 1
# Or it could be in a function:
def calc_y(an_x):
return an_x + 1
Run Code Online (Sandbox Code Playgroud)
现在我想重复计算 的许多可能值x。我知道for如果我已经有要使用的值列表(或其他序列),我可以使用循环:
xs = [1, 3, 5]
for x in xs:
y = x + 1
Run Code Online (Sandbox Code Playgroud)
while或者,如果有其他逻辑来计算值序列,我可以使用循环x:
def next_collatz(value):
if value % 2 == 0:
return value // 2
else:
return 3 * value + 1
def collatz_from_19():
x = 19
while x != 1:
x …Run Code Online (Sandbox Code Playgroud)