首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么能理解-循环?(难以完全理解-循环)

我怎么能理解-循环?(难以完全理解-循环)
EN

Stack Overflow用户
提问于 2014-02-03 20:14:40
回答 4查看 146关注 0票数 0

在我的Python教科书中,他们制作了一个“Hangman”游戏。资料来源:http://pastebin.com/k1Fwp7zJ

在理解以下代码片段时遇到了极大的困难:

代码语言:javascript
复制
new = ""
for i in range(len(word)):
    if guess == word[i]:
        new += guess
    else:
        new += so_far[i]
so_far = new

我不知道“我”到底是什么。我也不知道如何用英语“说”/imagine the For-循环。我无法理解/想象这个代码段中发生了什么,即使我已经完成了本章中的所有准备工作,并且到目前为止一切都是正确的。

在我的Hangman游戏的这一部分的计划/算法中,我写了:

*“检查单词的每个字符,并检查猜到的字母是否在单词中。如果猜到的字母在单词中,请注意其位置。然后转到"so_far”中的上述位置,并将其替换为猜测字母。“

我真的很头疼,想要理解这一段代码。当我试图自己写绞刑游戏,我总是被困在这里,我不知道如何做。

也许有人和我有过类似的处境。有人能解释一下这是什么意思吗?或许还有一种方法来理解这里剩下的代码?

EN

回答 4

Stack Overflow用户

发布于 2014-02-03 20:25:00

“我不知道i到底是什么”

i是为range中的每一项分配的名称。第一次通过循环,i == 0。第二次,i == 1,等等。

“我不知道如何用英语”说“/imagine for-Loop”。

Python中的for循环有两个部分:要分配的名称和要迭代的可迭代性。对于可迭代中的每个值,循环只运行一次*,将该值分配给提供的名称。

您的例子比较简单:

代码语言:javascript
复制
for i in range(...):

在这里,range(start[, stop[, step]])提供了从startstop (不包括在内)的每个step中的整数。您只有一个stop,所以使用默认的start=0step=1,提供:

代码语言:javascript
复制
range(n) ~= [0, 1, 2, ..., n-1, n]  

这些值中的每一个依次分配给名称i,允许您在循环中访问它们。

*除非您break out,否则return或错误是raised

票数 0
EN

Stack Overflow用户

发布于 2014-02-03 20:33:22

for循环遵循这个简单的设计:

让我们打破这条线:

代码语言:javascript
复制
for i in range(len(word)):

首先,让我们看一看:

代码语言:javascript
复制
for i

关键字for称为循环。它将重复/迭代相同的代码块,直到满足条件为止。i是当前变量(在本例中是数值变量)。假设有人说,把数字从1写到10,那么你的i就会从数字1到数字10。

代码语言:javascript
复制
in

关键字in将声明上一个变量i将等于的值范围。让我们来分析一下:

代码语言:javascript
复制
range(len(word))

这将转换为变量的length的range值。假设word等于"hello",那么长度是5,这意味着5的范围是0,1,2,3,4 ( range 不包括最终值)。

基本上,这是:

代码语言:javascript
复制
for i in range(len(word)):

指:

代码语言:javascript
复制
iterate the variable `i` from the range of the length of the the variable `word`.

一个简单的测试可以看出什么是i将代码更改为:

代码语言:javascript
复制
new = ""
for i in range(len(word)):
    print i #this will print the values
    if guess == word[i]:
        new += guess
    else:
        new += so_far[i]
so_far = new

记住,网上有很多教程:

票数 0
EN

Stack Overflow用户

发布于 2014-02-03 20:34:38

代码语言:javascript
复制
new = ""

这一行创建一个空字符串。

代码语言:javascript
复制
for i in range(len(word)):

在这一行中,代码告诉解释器在0范围内的每个数字,直到word -1的长度(由word -1函数获得)为止,执行下面的代码。

例如,len('Thing')应该是5。现在,如果代码是:

代码语言:javascript
复制
for i in range(len('thing')):
    print('Hello, world')

Hello, world打印5次。在Python中,您不需要像在其他语言中那样增加i。因此,当循环在经过if/ i == 0块之后启动时,它将自动增加到1。

代码语言:javascript
复制
if guess == word[i]:

这一行检查变量guess是否等于索引i处的word值。例如,如果是word = 'thing',那么word[0]就是t。计算机从0开始计数,而不是从1开始,因此word[4]将是g

代码语言:javascript
复制
  new += guess

这一行是new = new + guess的缩写。由于我们使用的是字符串,所以+操作符会将它们连接起来,或者将它们粘合在一起。例如,'a' + 'b'将是ab

代码语言:javascript
复制
else:

如果不满足if条件,则此行指示要执行什么操作。例如:

代码语言:javascript
复制
if some_number > 10:
    print('hello')
else:
    print('Bye')

如果some_number大于10,hello将打印。如果不是的话,拜伊会打印。

代码语言:javascript
复制
 new += so_far[i]

这一行连接新的和任何在so_far索引I处的东西。

代码语言:javascript
复制
so_far = new

这将so_far设置为新的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21536810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档