Итерация по строке символ за символом в цикле

1

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

Теги:
string
zelle-graphics

1 ответ

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

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

  • 0
    Это здорово, не понимал, что это было так просто. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню