Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2015 10:56:00

The_Witcher
Зарегистрирован: 2015-09-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

While vs for

Друзья, Доброго времени суток!
Помогите, пожалуйста! Знаю, что задача простая, но второй день не могу ее одолеть
Есть вот такой код:

import re
import os
a = ['123', '456', '789']
b = input("Введите первый элемент числа: ")
b1 = b.upper()
os.system('cls')
for str in a:
    if re.match(b1, str):
        print (str)
Я хочу его зациклить, но на все мои попытки, я получаю - что объект ‘str’ не может быть вызван.
А мне нужно чтобы получилось вот что вроде этого:
import re
import os
a = ['123', '456', '789']
while True:
    os.system('cls')
    b = input("Введите первый элемент числа, или 999 для выхода: ")
    b1 = b.upper()
    if b1 == "999":
        break
    elif b1 != "999":
        for str in a:
            if re.match(b1, str):
                print (str)

Отредактировано ZZZ (Окт. 3, 2015 12:46:55)

Офлайн

#2 Окт. 3, 2015 13:08:27

Oleg_Sizon
Зарегистрирован: 2015-02-28
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

While vs for

У меня на 3.4.3 Ваш зацикленный код работает, может, какая-то команда в в Вашей версии по другому пишется? Трейс ошибки в студию

Офлайн

#3 Окт. 3, 2015 13:28:22

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

While vs for

знатный говнокод

The_Witcher
b1 = b.upper()
зачем это если ожидаете принимать числа?
The_Witcher
elif b1 != “999”:
бессмысленная проверка, следующие строки и так будут выполняться т.к. break прервет цикл. Даже else не нужен
The_Witcher
for str in a:
называть переменные служебными словами плохая практика
The_Witcher
While vs for
название топика говорит лишь о том что вы не понимаете что это два разных цикла, для разных задач.

P.S. и вот такой код работает:
import re
a = ['123', '456', '789']
while True:
    b = input("Введите первый элемент числа, или 999 для выхода: ")
    if b == "999":
        break
    for s in a:
        if re.match(b, s):
            print(s)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Окт. 3, 2015 13:38:58

The_Witcher
Зарегистрирован: 2015-09-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

While vs for

JOHN_16
знатный говнокод
Зачем b1 = b.upper()?
У меня там буквенные значения, здесь я указал числа, чтобы долго не расписывать…

elif b1 != “999”:
Там 5000 записей, и нужна неповторимая команда для прекращения цикла.

“название топика говорит лишь о том что вы не понимаете что это два разных цикла, для разных задач.”
Я знаю что это два разных цикла поэтому и versus…

“называть переменные служебными словами плохая практика”
Вот в этом то и была ошибка.

Спасибо!!!


А насчет говнокода, я думаю что вы после трех уроков, не лучше писали, я только начал учиться…

Отредактировано The_Witcher (Окт. 3, 2015 13:46:23)

Офлайн

#5 Окт. 3, 2015 14:09:08

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

While vs for

The_Witcher
Там 5000 записей, и нужна неповторимая команда для прекращения цикла.
я абсолютно не об этом говорил. Если у вас код вида:
if b1 == "999":
        break
    elif b1 != "999":
        # next code
то строчка абсолютно равнозначно следующему коду:
if b1 == "999":
        break
#next code

The_Witcher
поэтому и versus…
эх…….забили. проехали. учите английский

The_Witcher
я думаю что вы после трех уроков, не лучше писали
я и после 200 уроков не постил сообщения на форум, потому что сам всего смог достичь, и не считаю это сверх достижением. Но кого это волнует) не так ли.




_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version