Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 21, 2019 12:18:26

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

FishHook
Да блин, вопрос в исполнении кода , относительно поставленных задач?
Может мне её расширить сразу до такой степени, чтоб можно было вычислить траекторию полета ракеты, при теоретическом изменении солнечной орбиты на ближайшие 2000 лет? А вдруг придется?
Если глянуть ниже , там стоит первоначальный вопрос как сделать код элегантнее и лаконичнее!?
Жизненный цикл этой программы неприлично короток. От этой программы не зависит эффективность бизнеса.
Если не ошибаюсь эта ветка для новичков, здесь люди которые вчера только первый раз в жизни хелло ворд написали, здесь стоит вопрос первоначально о работоспособности КОДА?
Кстати вот, во что превращается ХЕЛЛО ВОРД, если его начинать подстраивать на всякий случай)

 Программа HELLO WORLD расширенная версия,закрепляем полученные навыки
print("""\t\t\t\\\\\\Вас приветствует программа 'Hello World'\\\\\\.
      \t\t\t\\\\\\Я первая программа созданная моим создателем.\\\\\\""")  
print("Hello world!")
#создаем переменную строку Hello World
hello = "\n\n\t\t\tHello world!"
#выводим ее на экран 
print(hello)
print("Теперь в верхнем регистре:")
#с помощью строковых методов upper, lower, replace возвращаем исходную строку
#в верхнем, нижнем регистре и с заменой символов
print(hello. upper())
print("В нижнем:")
print(hello. lower())
print("А сейчас на русском:")
print(hello. replace("Hello world", "Привет мир"))
#используем функцию input , что бы ввести имя
name = input("\n\n\t\t\tДавай знакомиться, как тебя зовут?")
#с помощью конструкций if, elif, else адаем условия
if name == "Илья":
    what = input("Здорово, Хозяин! Я скучал по тебе!Как дела?")
    if what == "Хорошо":
        print("Я очень рад за тебя!")
    else:
        print("Ничего страшного, все образуется!")
else:
    print("Приятно познакомится", name, "!")
game = input("Tы любишь азартные игры?"). lower()
#загружаем модуль random который с помощью функции randint генерирует
#случайные числа в заданном диапазоне
if game == "да":
    import random
    input("Нажимй Enter, чтобы бросить кости.")
    pos1 = random.randint(1, 12)
    print(pos1)
    input("Отличный результат, теперь моя очередь, нажимай ещё раз!")
    pos2 = random.randrange(12) + 1
    print(pos2)
    if pos1 > pos2:
        print("Поздравляю! Продолжим знакомство!")
    else:
        print("Не расстраивайся, повезет в другой раз! Продолжим знакомиться!")
else:
    print("Правильно, это ЗЛО, не зря их запретили!")
#загружаем пустую переменную answer, с помощью оператора while создаем цикл
#который будет продолжаться, пока истинно условие цикла, в данном случае
#переменной answer не присвоено значение "Да" 
answer = ""
while answer !="да" :
    answer = input("Продолжим знакомство?"). lower()
    if answer != "да" :
        print(" Я вынужден настаивать, пока ты не скажешь 'Да'!")
print("""Одна из первых созданных полезных программ была КАЛЬКУЛЯТОР,
      вот таким его сделал когда-то мой создатель, надоест считать введи 'Нет'""")
print("\t\t\tВас приветсвует калькулятор")
print("\n\n\n")
end = " "
while end != "нет" :
    x = int(input("Введите значение 1: "))
    y = int(input("Введите значение 2: "))
    go = input("Введите символ действия:")
    if go == ("+") :
        print(x+y)
    elif go == ("-") :
        print(x-y)
    elif go == ("/") :
        print(x/y)
    elif go == ("*") :
        print(x*y)
    end = input("Продолжим?"). lower()
print("\n\n Поиграем в игру 'Угадай чиссло', я буду загадывать, а ты отгаывать")
print(" Отгадай число, от 1 до 100? ")
print(" У тебя всего 10 попыток!")
import random
sur = random.randint(1, 100)
step = 0
total = ""
while total != sur :
    total = int(input("Отгадай число?"))
    step += 1
    if total > sur :
        print("Меньше")
    elif total < sur :
        print("Больше")
    elif total == sur :
        print("Молодец, это действительно" , sur)
        print("Ты отгадал число всего за", step ,"шагов!")
    if step == 10:
        print("Ну ты , вообще, неудачник!")
        break
print("""\n\n А теперь моя очередь, ты загадывай, а я буду отгадывать,
          посмотрим кто быстрее?
          Пиши 'Больше' или 'Меньше' если я угадаю, напиши 'Правильно'.""")
non = int(input("Загадай число от 1 до 100:"))
kik = 1
x = 0
y = 101
xy = random.randint(x+1, y-1)
print(xy)       
take = input("")
while take != "Правильно":
    if take == "Больше":
        x = xy
        xy = random.randint(x+1, y-1)
        kik += 1
        print(xy)
    elif take == "Меньше":
        y = xy
        xy = random.randint(x+1, y-1)
        kik += 1
        print(xy)
    take = input("")
    if take == "Правильно":
        print("Ура! Я угадал число за" , kik ,"шагов!")
print("""\n\nА теперь играем в игру 'Орел и Решка', я буду бросать монету 100 раз,
    а ты загадывай Орел или Решка, чья позиция выпадет больше раз, тот и победитель.
    Начнем?""")
money = input("Загадывай Орел или Решка:")
bir = 0
cif = 0
step = 0
while True:
    resul = random.randint(1, 2)
    step += 1
    if resul == 1:
        bir += 1
    elif resul ==2:
        cif += 1
    if step == 100:
        break
print("Орел выпал ", bir, "раз, решка выпала" , cif , "раз!")
if money == "Орел" and bir > cif:
    print("Поздравляю, ты победитель!!! Тебе сегодня сказочно везет!!")
elif money == "Решка" and bir < cif:
    print("Поздравляю, ты победитель!!! Тебе сегодня сказочно везет!!")
else:
    prin(" Не расстраивайся ,повезет в другой раз! ")
        
input("\n\nНажмите Enter, чтобы выйти")
    

Офлайн

#2 Фев. 21, 2019 12:32:35

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

FishHook
И раз уж на то пошло, то пожалуйста - можно добавлять характеристики

 print("""Для изменения характеристики героя
        введите её номер:
        1 - Здоровье
        2 - Сила
        3 - Мудрость
        4 - Ловкость
        """)
character = [["Здоровье",0] , ["Сила",0] , ["Мудрость",0] , ["Ловкость",0] , ["Нераспределенное",30]]
choice = ""
while choice != "хватит":
    for i in character:
        print(i)
    choice = int(input("Выберите характеристику для изменения:"))
    value = int(input("Введите число на которое изменяете начение, если уменьшить то отрицательное:"))
    character[choice-1][1] += value
    character[len(character)-1][1] -= value
    if character[len(character)-1][1] < 0 or character[len(character)-1][1] > 30:
        print("Вы превысили лимит! Сумма всех очков не может быть больше 30!")
        character[len(character)-1][1] += value
        character[choice-1][1] -= value
но это всё нюансы, которые к сути изначального вопроса не относятся, если следовать вашей логике то в машины такси надо ставить унитаз, вдруг пассажиру в туалет захочется? так что ли?
не хочу обидеть , ваши советы дельные, я обязательно приму их сведению, но в данный момент вопрос стоял в другом ключе, спасибо

Офлайн

#3 Фев. 21, 2019 13:27:00

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

Babay82
а так?
Ну ОК, но я все равно могу сделать так чтобы одна характеритика была например -30(-60, -90 и тд…) а другая 60(90,120 и тд…). Тоесть нет контроля чтобы характеричтики не опускалиь ниже нуля, или не превышали какогото максимального значения.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 21, 2019 13:34:33)

Офлайн

#4 Фев. 21, 2019 13:39:33

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

PEHDOM
не получится, там общий лимит 30, нельзя вписать в характеристику больше очков чем доступно в нераспределенных или придать отрицательное значение не даст, напишет превышен лимит

Офлайн

#5 Фев. 21, 2019 13:43:34

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

а вообще, вот FishHook спасибо за идею, когда после рабочего дня нет сил учить новую главу можно занятся рефакторингом, практикуясь и закрепляя знания

 begin = print("""Для изменения характеристики героя
        введите её номер:
        1 - Сила
        2 - Мудрость
        3 - Ловкость
        4 - Здоровье
        
        """)
character = [["Нераспределенное",30] , ["Сила",0] , ["Мудрость",0] , ["Ловкость",0] , ["Здоровье",0]]
choice = ""
while choice != "хватит":
    for i in character:
        print(i)
    choice = int(input("Выберите характеристику для изменения:"))
    value = int(input("Введите число на которое изменяете начение, если уменьшить то отрицательное:"))
    character[choice][1] += value
    character[0][1] -= value
    if character[0][1] < 0 or character[0][1] > 30:
        print("Вы превысили лимит! Сумма всех очов не может быть больше 30!")
        character[0][1] += value
        character[choice][1] -= value
    add = int(input("Если хотите добавить характеристику нажмите- 5"))
    if add == 5:
        char = input("Впишите характеристику")
        num = 0
        new = [char, num]
        character.append(new)
        print("Номер новой характеристики" , len(character)-1)        
    else:
        print("Хорошо, оставим как есть!")
    print(begin)
еще много чего дополнить и поменять можно , идей хватает время к сожалению нет

Офлайн

#6 Фев. 21, 2019 13:47:24

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

Babay82
не получится, там общий лимит 30, нельзя вписать в характеристику больше очков чем доступно в нераспределенных или придать отрицательное значение не даст, напишет превышен лимит
ой все…
d:\temp>test_game.py
Для изменения характеристики героя
введите её номер:
1 - Здоровье
2 - Сила
3 - Мудрость
4 - Ловкость

['Здоровье', 0]
['Сила', 0]
['Мудрость', 0]
['Ловкость', 0]
['Нераспределенное', 30]
Выберите характеристику для изменения:1
Введите число на которое изменяете начение, если уменьшить то отрицательное:30
['Здоровье', 30]
['Сила', 0]
['Мудрость', 0]
['Ловкость', 0]
['Нераспределенное', 0]
Выберите характеристику для изменения:3
Введите число на которое изменяете начение, если уменьшить то отрицательное:-30
['Здоровье', 30]
['Сила', 0]
['Мудрость', -30]
['Ловкость', 0]
['Нераспределенное', 30]
Выберите характеристику для изменения:1
Введите число на которое изменяете начение, если уменьшить то отрицательное:30
['Здоровье', 60]
['Сила', 0]
['Мудрость', -30]
['Ловкость', 0]
['Нераспределенное', 0]
Выберите характеристику для изменения:3
Введите число на которое изменяете начение, если уменьшить то отрицательное:-30
['Здоровье', 60]
['Сила', 0]
['Мудрость', -60]
['Ловкость', 0]
['Нераспределенное', 30]
Выберите характеристику для изменения:
так можно продолжать добесконечности, в итоге я создам тупого как пробка, но мегаживучего танка, выносящего всех с одного щелбана.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 21, 2019 13:50:36)

Офлайн

#7 Фев. 21, 2019 14:03:49

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

Это же как снежный ком, одно другое цепляет и пошло поехало, в итоге лавина, просто изначально цель другая была

Офлайн

#8 Фев. 21, 2019 14:15:36

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

Babay82
Это же как снежный ком, одно другое цепляет и пошло поехало, в итоге лавина, просто изначально цель другая была
Имеено, об этом и писал FishHook если бы вы изначально учились длать все правильно, а не по принипу “и так сойдет, этоже обучение”, то у вас не было такой лавины.
И да,по поводу цели:
Babay82
задача стояла, с помощью изученного к данному моменту материала( с 1й по 5ю главу- это типы, переменные, ветвление, циклы while и for, строки, кортежи, списки, словари и всё)) , написать программу которая между 4мя характеристиками распределяет 30 очков, и при этом что бы была возможность вернуть их обратно и перераспределить.
ваш код не выполняет ее, распределить можно больше 30 очков.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 21, 2019 14:33:24)

Офлайн

#9 Фев. 21, 2019 15:14:48

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

PEHDOM
знание исходника для получения преимуществ карается баном а вообще я подумаю над исправлением

Офлайн

#10 Фев. 21, 2019 15:49:23

Babay82
Зарегистрирован: 2019-02-19
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Как, не используя функции, сделать код элегантнее и лаконичнее?

PEHDOM

 begin = print("""Для изменения характеристики героя
        введите её номер:
        1 - Сила
        2 - Мудрость
        3 - Ловкость
        4 - Здоровье
        
        """)
character = [["Нераспределенное",30] , ["Сила",0] , ["Мудрость",0] , ["Ловкость",0] , ["Здоровье",0]]
choice = ""
while choice != "хватит":
    for i in character:
        print(i)
    choice = int(input("Выберите характеристику для изменения:"))
    value = int(input("Введите число на которое изменяете начение, если уменьшить то отрицательное:"))
    character[choice][1] += value
    character[0][1] -= value
    if character[choice][1] < 0:
        print("Характеристика не может быть отрицательной")
        character[0][1] += value
        character[choice][1] -= value     
    elif character[0][1] < 0 or character[0][1] > 30:
        print("Вы превысили лимит! Сумма всех очов не может быть больше 30!")
        character[0][1] += value
        character[choice][1] -= value
    add = int(input("Если хотите добавить характеристику нажмите- 5"))
    if add == 5:
        char = input("Впишите характеристику")
        num = 0
        new = [char, num]
        character.append(new)
        print("Номер новой характеристики" , len(character)-1)        
    else:
        print("Хорошо, оставим как есть!")
    print(begin)
А так?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version