Форум сайта python.su
0
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, чтобы выйти")
Офлайн
0
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
Офлайн
294
Babay82Ну ОК, но я все равно могу сделать так чтобы одна характеритика была например -30(-60, -90 и тд…) а другая 60(90,120 и тд…). Тоесть нет контроля чтобы характеричтики не опускалиь ниже нуля, или не превышали какогото максимального значения.
а так?
[code python][/code]
Отредактировано PEHDOM (Фев. 21, 2019 13:34:33)
Офлайн
0
PEHDOM
не получится, там общий лимит 30, нельзя вписать в характеристику больше очков чем доступно в нераспределенных или придать отрицательное значение
не даст, напишет превышен лимит
Офлайн
0
а вообще, вот 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)
Офлайн
294
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)
Офлайн
0
Это же как снежный ком, одно другое цепляет и пошло поехало, в итоге лавина, просто изначально цель другая была
Офлайн
294
Babay82Имеено, об этом и писал FishHook если бы вы изначально учились длать все правильно, а не по принипу “и так сойдет, этоже обучение”, то у вас не было такой лавины.
Это же как снежный ком, одно другое цепляет и пошло поехало, в итоге лавина, просто изначально цель другая была
Babay82ваш код не выполняет ее, распределить можно больше 30 очков.
задача стояла, с помощью изученного к данному моменту материала( с 1й по 5ю главу- это типы, переменные, ветвление, циклы while и for, строки, кортежи, списки, словари и всё)) , написать программу которая между 4мя характеристиками распределяет 30 очков, и при этом что бы была возможность вернуть их обратно и перераспределить.
[code python][/code]
Отредактировано PEHDOM (Фев. 21, 2019 14:33:24)
Офлайн
0
PEHDOM
знание исходника для получения преимуществ карается баном
а вообще я подумаю над исправлением
Офлайн
0
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)
Офлайн