Найти - Пользователи
Полная версия: while если переменная существует
Начало » Python для новичков » while если переменная существует
1 2
py.user.next
gelius
ОК. Вроде все подробно расписал. Есть два разных цикла while.

Ты описываешь код. Код мы и так видим. Напиши задание, которое пытаешься решить с помощью этого кода.
gelius
Вообще немного в ступоре. Отдельно код предложенный Paranoia_Agent отрабатывает, но внутри моего кода говорит:
$ python script.py
  File "script.py", line 76
    povtor = 3
         ^
IndentationError: expected an indented block
Куда копать в таком случае?
Shaman
У него там табы для отступов.
gelius
py.user.next
Ты описываешь код. Код мы и так видим. Напиши задание, которое пытаешься решить с помощью этого кода.
Я ищу регуляркой заданную фразу в предложенном файле. Если фраза существует нужно выполнить один цикл, если несуществует другой. Ничего кроме как записывать фразу в переменную, а потом проверять ее наличие не придумал.
Как то так у меня вырисовывается:
rex = re.compile(r'ля-ля-ля')
slovo = [d[2] for d in rex.findall(body)]
slovo = str(slovo[0])
try:
	if slovo:
		povtor=10
		while povtor>0:
			print('Тело цикла: №'+str(povtor))
			povtor=povtor-1
except NameError:
	print('Переменной не существует или что там делать, если ее нет')
gelius
Реально вместо except NameError указать какая именно переменная должна отсутствовать?
dimy44
Бред какой-то. Вы сами понимаете код, который пишете? Во-первых, исключение NameError никогда не возникнет, ибо выше вы уже определили переменную slovo, попытавшись присвоить ей значение. Во-вторых, (почему “попытавшись”) если findall ничего не найдет, то там выскочит IndexError при попытке чтения элемента из пустого списка. Ну и в третьих- сам код, даже как пример- бред какой-то. Надо проверять, истин ли список, возвращённый findall'ом и в зависимостиот результата выполнять дальнейшие действия.
py.user.next
gelius
Я ищу регуляркой заданную фразу в предложенном файле. Если фраза существует нужно выполнить один цикл, если несуществует другой.

import re
 
s = 'abc def ghi'
 
pat = r'def'
 
match = re.search(pat, s)
if match:
    for i in range(1, 10 + 1):
        print('1:', i)
else:
    i = 10
    while i > 0:
        print('2:', i)
        i -= 1

>>> import re
>>> 
>>> s = 'abc def ghi'
>>> 
>>> pat = r'def'
>>> 
>>> match = re.search(pat, s)
>>> if match:
...     for i in range(1, 10 + 1):
...         print('1:', i)
... else:
...     i = 10
...     while i > 0:
...         print('2:', i)
...         i -= 1
... 
1: 1
1: 2
1: 3
1: 4
1: 5
1: 6
1: 7
1: 8
1: 9
1: 10
>>>

>>> import re
>>> 
>>> s = 'abc de ghi'
>>> 
>>> pat = r'def'
>>> 
>>> match = re.search(pat, s)
>>> if match:
...     for i in range(1, 10 + 1):
...         print('1:', i)
... else:
...     i = 10
...     while i > 0:
...         print('2:', i)
...         i -= 1
... 
2: 10
2: 9
2: 8
2: 7
2: 6
2: 5
2: 4
2: 3
2: 2
2: 1
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB