我正在学习Python,我们正在学习关于序列的课程,我们已经给出了这个示例代码,但我有一些关于它的问题;
word = input("Word? ")
letter = input("Letter? ")
i = 0
found = False
while not found and i != len(word):
found = word[i] == letter
i = i + 1
if found :
print("letter ", letter, " found in word ", word, " at position ", i -1)
else:
print("letter ", letter, " not found in word ", word)
在找到的行上发生了什么= word [i] == letter
为什么print语句会在i-1
我对此非常陌生,所以如果你能为ELI5提供非常有帮助的话。 谢谢你提前。
答案 0 :(得分:0)
如果程序正在查看的字母(word[i]
)等于letter
,则布尔变量found
变为true
,否则,循环将一直持续到单词的结尾或直到找到letter
。
由于i
已在其上方while
循环中增加,因此无论是否找到letter
。
答案 1 :(得分:0)
欢迎使用python。回答你的问题:
此语句将found
分配给比较的值
在word[i]
和letter
之间。换句话说,found
需要
问题答案的boolean
值:
"is `word[i]` equal to `letter`?"
您使用i-1
代替i
,因为不会阻止循环
即使在找到它时也会递增i
。
答案 2 :(得分:0)
False
:正如您所看到的,在之前的一点中
您将found
设置为word[i] == letter
的程序。这种类型的变量是
通常称为"布尔标志"。在你的for循环中,值的
word
设置为布尔表达式i
,其中
用简单的英语表示:如果索引为letter
的{{1}}的值为
等于变量found
的值返回true,否则返回true
返回false 。
在print语句中,当布尔标志>>> string = "string"
>>> string[0] # what is the value of the character at postion zero?
's'
>>> string[1] # what is the value of the character at postion one?
't'
>>> etc..
(见上面的答案)为真时,它将打印匹配发生的索引。您可能已经了解到,每个字符串中的每个字符都有特定的索引。例如
{{1}}