Завершить 'If Statement' функцией - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь пропустить оставшуюся часть оператора if после запуска функции для определения определенного значения, равного 0 или 1. Если значение равно 0, оно пропускает оставшуюся часть оператора if, если оно равно 1 , он продолжается с оператором if и запускается соответствующим образом. Вот код:

test2.py

import os, sys
from functiontest import function

message = 'foo'
check = 0

if 'foo' in message:
    check = function(message,check)
    print(check)
    print('bar')

if check == 0:
    print('foo not recognized')

с файлом функции

functiontest.py

import os, sys

def function(a,b):
    print('checking message')
    a = a.split()
    print(a)
    if a[0] == 'foo':
        b = 1
        print(b)
        return b
    else:
        b = 0
        return b

Когда обнаруживается слово, отличное от "foo", точно такое, как написано, оно должно выводить только "foo not распознано". С таким словом, как "foot", он по-прежнему выполняет код в операторе if, потому что он содержит foo, чего я не хочу. Есть ли способ передать остальную часть оператора if со стороны функции? Я знаю, как сделать это с помощью оператора if else в основном коде test2.py, потому что я передаю обратно аргумент проверки, но я стараюсь сделать основной код максимально чистым, поэтому есть ли способ сделать это внутри functiontest.py? Спасибо.

1 Ответ

0 голосов
/ 14 марта 2019

Эту проблему можно решить, выполнив то, что предлагается в: Как выйти из предложения if

Не ясно, что это решит вашу проблему, но это будет мой код:

import os, sys

def check_message(message):
    print('Checking message')
    for m in message.split():
        if m == 'foo':
            return True
        else:
            return False


def wrapper(message):
    if 'foo' in message:
        check = check_message(message)
        if check:
            return
        print(check)
        print('bar')


message = 'foo'
wrapper(message)

но я не понимаю, почему двойная проверка сообщения, а не просто:


def wrapper(message):
    if check_message(message)
        return
    print('bar')


message = 'foo'
wrapper(message)

В этом случае 'bar' будет напечатано, только если сообщение не содержит 'foo' слов.

Также, что касается вашего кода, вам не нужно указывать check в качестве ввода, поскольку вы не используете его в функции function, вы перезаписываете его в любом случае.

Также лучше использовать True и False вместо 1 и 0

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