Найти - Пользователи
Полная версия: Python детсадовского уровня (циклы, кортежи, списки)
Начало » Python для новичков » Python детсадовского уровня (циклы, кортежи, списки)
1 2 3 4
insiki
А я вот так сделал:
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)
JOHN_16
insiki
ужасный код - чрезмерно много лишних действий. исходный список пустеет. Самое оптимальное то как сделано в предыдущем посту.
И да ..чувствуется почерк Си, это не преступление, но на Питоне лучше писать в питон стиле.
insiki
JOHN_16
ужасный код - чрезмерно много лишних действий. исходный список пустеет. Самое оптимальное то как сделано в предыдущем посту.
И да ..чувствуется почерк Си, это не преступление, но на Питоне лучше писать в питон стиле.
В предложенном предыдущем варианте с random.shuffle выведутся в том числе повторяющиеся элементы списка, а в задании сказано, что повторов в выводе быть не должно

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

JOHN_16
insiki
заменить random.shuffle(script) на random.shuffle(set(script)) . И это по прежнему лучше :-)
insiki
JOHN_16
заменить random.shuffle(script) на random.shuffle(set(script)) . И это по прежнему лучше :-)
О! Про set в книге еще не говорилось, но какая штука удобная! Благодарю
z00t
insiki
В предложенном предыдущем варианте с random.shuffle выведутся в том числе повторяющиеся элементы списка, а в задании сказано, что повторов в выводе быть не должно
Так и не понял с какого перепуга должны повторятся элементы списка. Метод shuffle() уже переставил элементы списка в случайном порядке, а цикл for вывел эти элементы без повтора.
fox85
А я вот так сделал:


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)
     # Первый способ
ranger
О, я тоже новичок в программировании и изучаю Питон по этой книжке. Мне нравится, что там всякие забавные задания надо выполнять. Сейчас с викториной парюсь, что-то не нравится она мне.

Для задачки со случайным списком у меня такой был вариант (но про шуффле пришлось почитать в инетернете, наверное там какое-то другое решение подразумевалось):
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, чтобы выйти")
ayb
Я Лутца не читал, но вот по поводу задачи с персонажем и распределением очков между показателями : почему никто не использует в этой задаче ООП ? Неужто до этой задачи нет упоминания об ООП ? Ведь то, что персонажа удобно описать как объект с характеристиками лежит на поверхности. Например
ranger
ayb
Я Лутца не читал, но вот по поводу задачи с персонажем и распределением очков между показателями : почему никто не использует в этой задаче ООП ? Неужто до этой задачи нет упоминания об ООП ?
Именно, там ООП дальше начинается и с ним уже более интересные игры (блэкджек). И это не Лутц, а Доусон. Я Лутца читаю параллельно, но у него слишком много информации и не всю ее можно сразу применить на практике. А Доусон для меня (полного нуба в программировании вообще) очень удобен, прочитал - сделал задание - запомнил.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB