Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 26, 2015 21:28:38

insiki
От: Приморский край
Зарегистрирован: 2015-01-26
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Python детсадовского уровня (циклы, кортежи, списки)

А я вот так сделал:

import random
WORDS = ["python", "кошка", "банан", "банан", "машина", "мотоцикл"]
NEW_WORDS = []
while WORDS:
    a = random.choice(WORDS)
    if a not in NEW_WORDS:
        NEW_WORDS.append(a)
    WORDS.remove(a)
print(NEW_WORDS)

Офлайн

#2 Янв. 27, 2015 06:41:23

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

Python детсадовского уровня (циклы, кортежи, списки)

insiki
ужасный код - чрезмерно много лишних действий. исходный список пустеет. Самое оптимальное то как сделано в предыдущем посту.
И да ..чувствуется почерк Си, это не преступление, но на Питоне лучше писать в питон стиле.



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

Офлайн

#3 Янв. 27, 2015 06:46:10

insiki
От: Приморский край
Зарегистрирован: 2015-01-26
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Python детсадовского уровня (циклы, кортежи, списки)

JOHN_16
ужасный код - чрезмерно много лишних действий. исходный список пустеет. Самое оптимальное то как сделано в предыдущем посту.
И да ..чувствуется почерк Си, это не преступление, но на Питоне лучше писать в питон стиле.
В предложенном предыдущем варианте с random.shuffle выведутся в том числе повторяющиеся элементы списка, а в задании сказано, что повторов в выводе быть не должно

Я сам новичок вообще в программировании, не считая школьной программы и 1-го курса, а это было более 10 лет тому назад. Так же взялся за изучение, читаю книгу Доусона, делаю те же упражнения, что и автор когда-то, застрял перед функциями

Отредактировано insiki (Янв. 27, 2015 07:04:32)

Офлайн

#4 Янв. 27, 2015 07:42:42

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

Python детсадовского уровня (циклы, кортежи, списки)

insiki
заменить random.shuffle(script) на random.shuffle(set(script)) . И это по прежнему лучше :-)



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

Офлайн

#5 Янв. 27, 2015 08:45:16

insiki
От: Приморский край
Зарегистрирован: 2015-01-26
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Python детсадовского уровня (циклы, кортежи, списки)

JOHN_16
заменить random.shuffle(script) на random.shuffle(set(script)) . И это по прежнему лучше :-)
О! Про set в книге еще не говорилось, но какая штука удобная! Благодарю

Офлайн

#6 Фев. 18, 2015 08:08:48

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

Python детсадовского уровня (циклы, кортежи, списки)

insiki
В предложенном предыдущем варианте с random.shuffle выведутся в том числе повторяющиеся элементы списка, а в задании сказано, что повторов в выводе быть не должно
Так и не понял с какого перепуга должны повторятся элементы списка. Метод shuffle() уже переставил элементы списка в случайном порядке, а цикл for вывел эти элементы без повтора.

Офлайн

#7 Апрель 24, 2015 15:25:29

fox85
Зарегистрирован: 2014-05-30
Сообщения: 56
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python детсадовского уровня (циклы, кортежи, списки)

А я вот так сделал:


import  random
spisok = ["python", "кошка", "банан", "банан", "машина", "мотоцикл"]
empty_list = []
count = len(spisok)
schetchik = 0
while count != schetchik:
    for item in spisok:
        item = random.choice(spisok)
        empty_list.append(item)
        schetchik += 1
    print(empty_list)
     # Первый способ

Офлайн

#8 Апрель 29, 2015 20:54:55

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

Python детсадовского уровня (циклы, кортежи, списки)

О, я тоже новичок в программировании и изучаю Питон по этой книжке. Мне нравится, что там всякие забавные задания надо выполнять. Сейчас с викториной парюсь, что-то не нравится она мне.

Для задачки со случайным списком у меня такой был вариант (но про шуффле пришлось почитать в инетернете, наверное там какое-то другое решение подразумевалось):

words = ["мумми-тролль", "комета", "шляпа", "морра", "ледяная дева", "мю"]
import random
random.shuffle(words)
print(words)
input("\nНажмите Энтер, чтобы выйти")

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

pool = 30
atts = [["Сила", 0], ["Здоровье", 0], ["Мудрость", 0], ["Ловкость", 0]]
a = " "
while a != "0":
    a = input('''
      0 - выйти
      1 - посмотреть характеристики
      2 - изменить характеристики\n
      ''')
    if a == "1":
        print(atts)
    elif a == "2":
        b = 8
        while b != 5:
            print(atts)
            print("Свободных очков: " + str(pool) + ".")
            b = int(input('''
            1 - изменить Силу
            2 - изменить Здоровье
            3 - изменить Мудрость
            4 - изменить Ловкость
            5 - назад в меню
            '''))
            if b == 5:
                pass
            else:
                print("Введите целое число, на которое хотите изменить характеристику.")
                print("Если хотите отнять пункты, введите отрицательное число.")
                n = int(input())
                pool -= n
                atts[b - 1][1] += n
    elif a!= "1" and a != "2" and a != "0":
        print("В меню нет такого варианта.")
input("\nНажмите Энтер, чтобы выйти")

Больше всего из пройденного мне пока что понравилась задачка, где компьютер должен угадать число, которое загадал человек. Тут для более быстрого угадывания нужно всегда делить интервал на два. У меня тут, наверное, немного громоздкие условия, но так уж вышло))

print("Привет, давай поиграем в угадывание числа!\n")
print("Для начала определим интервал.")
a = int(input("Введи число начала интервала: "))
b = int(input("Введи число конца интервала: "))
print("Теперь загадай целое число от", str(a), " до ", str(b) + ", а я буду угадывать.\n")
input("Загадал? Если да, то нажми Enter.\n")
otv = " "
while otv != "ok" and (b - a) > 1:
    i = len(range(a, b))
    j = int(i / 2)
    guess = range(a, b)[j]
    print(guess)
    otv = input("Попал? 'ok' Больше? 'bol' Меньше? 'men'\n")
    if otv == "bol":
        b = b
        a = guess
    elif otv == "men":
        a = a
        b = guess
while otv != "ok" and (b - a) <= 1 and b != a - 1:
    if otv == "bol":
        print(b)
        otv = input("Попал? 'ok' Больше? 'bol' Меньше? 'men'\n")
    elif otv == "men":
        print(b - 1)
        otv = input("Попал? 'ok' Больше? 'bol' Меньше? 'men'\n")
if otv == "ok":
    print("Ах, какой я умный!\n")
else:
    print("Да ты мухлюешь!\n")
input("Нажми Enter, чтобы выйти")

Отредактировано ranger (Апрель 29, 2015 21:39:21)

Офлайн

#9 Май 1, 2015 08:45:14

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Python детсадовского уровня (циклы, кортежи, списки)

Я Лутца не читал, но вот по поводу задачи с персонажем и распределением очков между показателями : почему никто не использует в этой задаче ООП ? Неужто до этой задачи нет упоминания об ООП ? Ведь то, что персонажа удобно описать как объект с характеристиками лежит на поверхности. Например

Офлайн

#10 Май 2, 2015 09:47:58

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

Python детсадовского уровня (циклы, кортежи, списки)

ayb
Я Лутца не читал, но вот по поводу задачи с персонажем и распределением очков между показателями : почему никто не использует в этой задаче ООП ? Неужто до этой задачи нет упоминания об ООП ?
Именно, там ООП дальше начинается и с ним уже более интересные игры (блэкджек). И это не Лутц, а Доусон. Я Лутца читаю параллельно, но у него слишком много информации и не всю ее можно сразу применить на практике. А Доусон для меня (полного нуба в программировании вообще) очень удобен, прочитал - сделал задание - запомнил.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version