【发布时间】:2017-01-01 01:47:16
【问题描述】:
我一直试图理解这种组合输入()、循环和列表理解背后的机制;来自 Codegaming 的“MarsRover”谜题。该序列创建了一条 2D 线,表示在 6999 单位宽(x 轴)的区域中的拓扑的切口。
可以理解,我最初的问题被搁置了,因为太宽泛了。我试图缩短和缩小问题:我基本上了解列表理解,并且我对 for 循环很有经验。
点赞列表:
land_y = [int(j) for j in range(k)]
if k = 5; land_y = [0, 1, 2, 3, 4]
for循环:
for i in the range(4)
a = 2*i = 6
ab.append(a) = 0,2,4,6
但是在这里,它并没有加起来(在我的脑海中): 从 6 个点 (x,y) 沿 x 轴创建 6999 个点。
surface_n = int(input())
for i in range(surface_n):
land_x, land_y = [int(j) for j in input().split()]
我不明白“i”在哪里有所作为。 我不明白输入中的数据是如何“打包”的。我在几乎完全相同的代码中在另一个任务上拆分了整数字符串,并且我可以轻松地创建新列表并使用它们 - 因为我了解我正在解包的结构(非常简单的是一种具有一个目的的数据类型)。
这条线在“游戏”-while-循环中的事实让我更加困惑,因为它会随着游戏状态的变化而动态更新。
x, y, h_speed, v_speed, fuel, rotate, power = [int(i) for i in input().split()]
也许有人可以举例说明如何用 javascript、haskell 或 c# 编写它?不需要语法正确,我只是在这里为这个概念而苦苦挣扎。
【问题讨论】:
-
如果你刚开始接触Python,我建议你关注一些其他的代码;有人在这里打代码,这里有太多东西需要解释。抱歉,这对于 Stack Overflow 来说太宽泛了。
-
input()从标准输入中获取一行text;此代码需要空格分隔的数字,然后将其转换为整数列表。因此,脚本标准输入上的42 81将被拆分为['42', '81'],列表推导在其上循环并生成[42, 81],然后将元素分配给两个变量。其他表达式也一样,只是现在要输入 7 个数字。 -
嘿,我很明白,很抱歉打扰了。无论如何,感谢您的回答。我已经将它缩短并指定了一点,但我不想成为 nouicanse。我尊重如果它仍然不合格。
标签: list loops python-3.x list-comprehension