1

Тема: Перетворити функцію генерації випадкових імен у функцію-генератор

Підкажіть, будь ласка, як перетворити функцію

def my_name():
    my_name=""
    for i in range (len(v)):
        my_name=my_name+random.choice(v)
    return my_name

у функцію-генератор.

Я користуюсь цією функцію для генерації випадкових імен:

import random

n=int(input('Введіть розмірність вектору '))

v = tuple("abcdefgh")
my_list = []

def my_name():
    my_name=""
    for i in range (len(v)):
        my_name=my_name+random.choice(v)
    return my_name

#def name_generator():
#    return sum(random.choice(v) for i in range (len(v)))

#print(name_generator())

for i in range (n):
    my_list.append(my_name())

print(tuple(my_list))

2

Re: Перетворити функцію генерації випадкових імен у функцію-генератор

Загалом - не треба перетворювати, треба одразу думати про неї, як про генератор.

def my_name_gen():
    while(True):
        yield my_name()

Якщо хочете, замість my_name поставте його код, тоді ви "перетворите" функцію на генератор.

Подякували: DimONN1

3

Re: Перетворити функцію генерації випадкових імен у функцію-генератор

Ну і одразу:
my_name = my_name + - це my_name +=

for i in range (len(v)):
        my_name+= ...

- це

my_name = sum(... for i in range (len(v)))
Подякували: DimONN1

4

Re: Перетворити функцію генерації випадкових імен у функцію-генератор

Хм, треба обміркувати все це ...

5

Re: Перетворити функцію генерації випадкових імен у функцію-генератор

А, вибачте, для стрічок не sum, а ''.join.

6 Востаннє редагувалося DimONN (21.03.2018 14:44:51)

Re: Перетворити функцію генерації випадкових імен у функцію-генератор

koala написав:

А, вибачте, для стрічок не sum, а ''.join.

О, а я вже хотів питати.