Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 30, 2017 00:00:29

BlooD_xD
Зарегистрирован: 2017-04-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться

Задание такое: сделать 5 строк текста
с помощью random.choice достать из списков по одному слову, и с помощью random.randint определить какой структуры будет строка: 1) артикль + существительное + глагол + прилагательное; 2) артикль+ существительное + глагол
(задание №3 из книги Марка Саммерфилда)
код:

 art =  ["the", "a"]
sush = ["cat", "dog", "woman", "man", "banana"]
glag = ["run", "jumped", "going", "kill"]
pril = ["aromatic", "blunt", "cold"]
spisok1 = [art, sush, glag, pril]
spisok2 = [art, sush, glag]
import random
g = 0
d = 0
w = 0
while g < 5:
    z = []
    x = []
    i = random.randint(1,2)
    
    if i == 1:
        while d < 4:
            z.append(random.choice(spisok1[w]))
            w += 1
            d += 1
        print(z)       
    else:
        while d <3:
            x.append(random.choice(spisok2[w]))
            w += 1
            d += 1
        print(x)
    g =+1
на выходе мне выдает бесконечные пустые списки, помогите разобраться что делаю не так

Офлайн

#2 Апрель 30, 2017 10:10:58

krot
От:
Зарегистрирован: 2011-07-03
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

помогите разобраться

Первая грубая ошибка в последней строке
g =+1
Отсюда зацикливание.
Далее, пустые списки, потому что переменные w и d после первого прохождения цикла while уже имеют значения не равные 0.

Измените последнюю строку на
g += 1
и добавьте
w = 0
d = 0

P.S. Зачем Вам while? Может стоит изменить его на for? И в задаче нужно получить строки, а не списки.



Отредактировано krot (Апрель 30, 2017 10:11:46)

Офлайн

#3 Апрель 30, 2017 11:23:01

BlooD_xD
Зарегистрирован: 2017-04-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться

спасибо, понял уже что нужны не списки, просто интересно было что именно в этом коде не так

Офлайн

#4 Июнь 27, 2017 11:00:18

citizen404
Зарегистрирован: 2017-05-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться

Доброго времени суток!
Сейчас разбираюсь с генераторами списков по примерам из книги Лутца, а именно получение доступа к строкам и столбцам массива(списка). До конца не могу понять некоторые моменты. Прошу всех неравнодушных внести ясность.

Итак, есть следующий список (он же массив) :
1. Исходный список и манипуляции с ним в интерпретаторе

Больше всего вопросов у меня по этой инструкции : Выборка элементов матриц по диагонали

Ниже я приведу скриншоты со своими пометками, как я понимаю тот или иной фрагмент кода. Собственно у меня к Вам две просьбы: 1) как получить список содержащий элементы по диагонали 3, 5, 7 или 7, 5, 3 ?; 2) правильно ли я понимаю отдельные фрагменты кода ?

2. Как я понимаю запись M
3. Как я понимаю запись i
4. Как я понимаю запись

И еще такой вопрос. Как интерпретатор понимает что ему нужно проходиться по столбцам, а не по строкам в случае с : Выборка элементов второго столбца матрицы
Этот алгоритм предусмотрен в логике самих генераторов или как ?
Прошу прощения если перемудрил с формулировками или с способом изложения вопроса. Старался объяснить как можно понятнее.

Отредактировано citizen404 (Июнь 27, 2017 11:02:48)

Офлайн

#5 Июнь 27, 2017 11:19:11

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

помогите разобраться

citizen404
1) как получить список содержащий элементы по диагонали 3, 5, 7 или 7, 5, 3 ?;
 diag2 = [M[2-i][i] for i in [0,1,2]]
citizen404
И еще такой вопрос. Как интерпретатор понимает что ему нужно проходиться по столбцам, а не по строкам
 M[тут индекс строки начиная с 0][тут индекс столбца начиная с 0]

Отредактировано krok64 (Июнь 27, 2017 11:30:19)

Офлайн

#6 Июнь 27, 2017 12:18:51

citizen404
Зарегистрирован: 2017-05-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться

krok64
  M[тут индекс строки начиная с 0][тут индекс столбца начиная с 0]

Т.е. так ??? : Индексы для каждого элемента матрицы, т.е. для числа 5 соответствует индекс
 M[1][1]
? Я все правильно понял ?

И что тогда значат индексы 0, 1, 2 в фрагменте кода :
 ...for i in [0, 1, 2]
Это индексы строки или столбца, или самого элемента матрицы ?

И еще, в этом выражении :
 [M[2-i][i]
число 2 только потому, что максимальный индекс который может быть для столбца и строки данного массива равен двум ??? Верно ? Т.е. если бы к примеру у нас массив имел строку и столбец с индексом к примеру 4, то там бы вместо двойки была четверка ? Или я чего то не понимаю ?

В любом случае, спасибо, что уделили время.

Офлайн

#7 Июнь 27, 2017 12:51:19

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

помогите разобраться

citizen404
т.е. для числа 5 соответствует индекс
 M[1][1]
? Я все правильно понял ?
да
citizen404
И что тогда значат индексы 0, 1, 2 в фрагменте кода :
  ...for i in [0, 1, 2]
Это индексы строки или столбца, или самого элемента матрицы ?
это значения которые принимает переменная i. Т.е. переменная i сначала равняется 0, потом 1 и наконец 2. Как интерпретировать эту переменную решать тебе. В данном примере i отвечает за выбор строки и столбца. Например когда
  i=0 мы выбираем M[2][0], когда i=1, выбираем M[1][1] и наконец i=2 и мы выбираем M[0][2]
.
citizen404
число 2 только потому, что максимальный индекс который может быть для столбца и строки данного массива равен двум ??? Верно ?
да

Отредактировано krok64 (Июнь 27, 2017 12:55:54)

Офлайн

#8 Июнь 27, 2017 13:16:32

citizen404
Зарегистрирован: 2017-05-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться

krok64, огромное Вам спасибо! Очень помогли.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version