在一个循环中逐个字符地遍历一个字符串

时间:2018-10-16 20:18:01

标签: python string zelle-graphics

因此,我正在Python 3中使用Zelle中的图形模块,并且尝试使之输入用户输入的单词,然后每次在图形窗口中单击时,它都会在该位置绘制单词的下一个字母我点击。我知道这必须使用字符串索引,但是我不确定如何在字符串索引中进行迭代,因为将循环变量解析为索引会产生错误,即字符串索引必须是整数。

word_input = input("Enter a word!")
win = GraphWin("Graphic Letters", 400,400)
for ch in word_input:
    click_location = win.getMouse()
    word_written = Text(click_location, word_input[1])
    word_written.draw(win)

这是我到目前为止的内容,但是我只能将数字解析为

  

word_input []

,因为它不允许我在其中插入“ ch”以遍历字符串的每个索引。因此,如果我输入“ bee”,它将只在我单击的窗口中绘制3次,而不是按顺序绘制b,e,e。

1 个答案:

答案 0 :(得分:1)

ch已经是字符,因此您不再需要为word_input下标:

word_input = input("Enter a word!")
win = GraphWin("Graphic Letters", 400,400)
for ch in word_input:
    click_location = win.getMouse()
    word_written = Text(click_location, ch)
    word_written.draw(win)

字符串是字符串的可迭代字符(也是字符串),因此,如果您编写for ch in word_input,则ch将在每次迭代中将下一个字符作为值,例如:

>>> for ch in 'foobar':
...     print(ch)
... 
f
o
o
b
a
r

但是请注意,这里所有字符很有可能会相互渲染。您可能希望在两次迭代之间“休眠”,以使用户有时间移动鼠标。