Итерация по строке символ за символом в цикле - PullRequest
0 голосов
/ 16 октября 2018

Итак, я использую графический модуль от Zelle в Python 3, и я пытаюсь сделать так, чтобы пользователь вводил слово, а затем каждый раз, когда он нажимал в графическом окне, он рисовал следующую букву слова, гдеЯ нажимаю.Я знаю, что для этого нужно использовать индексирование строк, но я не уверен, как выполнять итерацию по строковым индексам, поскольку анализ переменной цикла в индексе дает ошибку, что строковые индексы должны быть целыми числами.

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' в него для переборакаждый из индексов строки.Поэтому, если я введу «пчелу», она будет только трижды рисовать «е» в окне, где я нажимаю, вместо того, чтобы рисовать б, е, е по порядку.

1 Ответ

0 голосов
/ 16 октября 2018

ch уже является символом, поэтому вам больше не нужно индексировать word_input:

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

Строка является итеративной из ее символов (которые также являются строками), поэтомуесли вы напишите for ch in word_input, то ch будет иметь в качестве значения для каждой итерации следующий символ, например:

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

Обратите внимание, однако, что здесь, вероятно, все символы будут отображаться друг над другом.Возможно, вы захотите «поспать» между итерациями, чтобы дать пользователю некоторое время для перемещения мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...