#python #python-3.x #while-loop
#python #python-3.x #цикл while
Вопрос:
Работаю над этой проблемой для курса Python и ни за что на свете не могу понять, почему это не работает. Я бы предпочел, чтобы он выдал мне ошибку, чем напечатал 0!
Проблема выдает мне переменную x
с показанной строкой, и мне нужно напечатать индекс первого использования y
.
x = 'Poisson geometry plays an important role in noncommutative geometry.'
y = 'u'
i = 0
while i == 0:
for o in x:
if o == y:
print(y, "is first seen in index = ", y.index(o))
i = 1
Показанный код возвращает:
u is first seen in index = 0
Комментарии:
1.
y.index(o)
находится в ветке, гдеo == y
. Позиция любой строки сама по себе равна 0.2. Хотя основная проблема решается приведенными ниже ответами, ваш
while
цикл также кажется ненужным. Обратите внимание, что он будет выполняться через весьfor
цикл во время первой итерации цикла while. Включение цикла while в том виде, в каком вы его написали, просто приводит к тому, что программа продолжает цикл вечно (даже после поиска по всей строке) в случае, когда совпадение не найдено.3. И, как указывает @T4roy, вам также не нужен
for
цикл, если вы уже используете.index
для поиска искомого символа.
Ответ №1:
Вы хотели индексировать x
? В этом случае используйте x.index(o)
где выполняется поиск o
в x
.
x = 'Poisson geometry plays an important role in noncommutative geometry.'
y = 'u'
i = 0
while i == 0:
for o in x:
if o == y:
print(y, "is first seen in index = ", x.index(o))
i = 1
Однако правильный способ его записи — без цикла:
x = 'Poisson geometry plays an important role in noncommutative geometry.'
y = 'u'
print(y, "is first seen in index = ", x.index(y))
вывод:
u is first seen in index = 51
Комментарии:
1. Да, я вижу, что теперь вам не нужен цикл, но это было в разделе обучения «While», поэтому я пошел прямо туда, не думая о самом простом способе.
Ответ №2:
По сути, вы заставляете его искать 'u'.index('u')
y.index(o)
должно быть x.index(o)
для этого примера.
Ответ №3:
Вам нужно выполнить итерацию? Если вы сохраните свои первые 2 строки, а затем используете x.index(y)
, вы получите тот же результат без использования while
, for
или if
.
x = 'Poisson geometry plays an important role in noncommutative geometry.'
y = 'u'
print(y, "is first seen in index = ", x.index(y))
Комментарии:
1. Похоже, вам не нужно повторять. Проблема в разделе «Пока» обучения, поэтому мой мозг пошел прямо туда.