Как вернуть значения из цикла "for"? - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь заставить цикл пройти через предоставленную строку и вернуть False, если найден символ, который не распознан, и True, если все символы распознаны. Я понимаю, что циклы for не позволяют возвращать значения внутри них, но, учитывая, что это часть большего кода, мне нужно возвращать значение bool в отличие от напечатанного.

Есть ли способ выяснить эту проблему без цикла for? Мой код ниже.

(я также нахожусь во вступительном классе, где многие из встроенных функций и тому подобное мы еще не изучили, и поэтому я, вероятно, еще не должен использовать ... какие-либо простые способы получениявокруг этого?)

    chars = ["o", ".", "\"", "n"]


    def find_characters(s):
        for c in s:
            if c not in chars:
                break

    # IDEALLY WANT
    def find_characters(s):
        for c in s:
            if c not in chars:
                return False
                break
            else:
                return True

Ответы [ 3 ]

5 голосов
/ 15 октября 2019
def find_characters(s):
    for c in s:
        if c not in chars:
            return False
     return True

Основываясь на комментариях, я думаю, что это то, что вы хотите.

4 голосов
/ 15 октября 2019

Если указанная строка s, вы можете проверить свое состояние и вернуться с помощью:

def find_characters(s):
    return all(c in chars for c in s)
0 голосов
/ 15 октября 2019

вы можете использовать yield для возврата нескольких значений из цикла:

def createGenerator():
    mylist = range(3)
    for i in mylist:
        yield i*i

mygenerator = createGenerator() # create a generator
for i in mygenerator:
     print(i)


#output:
0
1
4
...