Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 7, 2016 22:48:45

The_Tsar_of_Anarchy
Зарегистрирован: 2016-08-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода

Суть всей проблемы такова - программа выполняет по сути своей простые действия и я умом понимаю, что может быть короче, но не знаю, как это сделать. Да и просто замечания по нему будут очень полезны.
import random
print(“Приветствую!”)
print(“Как вас зовут?”)
user_name = input()
print(“Я загадываю число от 1 до 100. Ты угадываешь.”)
print('Введите число попыток либо “нет” для отказа')
control = 0
dele = “; ”
while 1:
controller = input()
if controller == “нет”:
print(“Вы отказались от счетчика попыток”)
break
try:
controller = int(controller)
control = 1
break
except ValueError:
print(“Повторите попытку, вы ввели не число”)
my_number = random.randint(1,100)
display_variants =
difference = “0”
counter = 0
while controller == “нет” or controller > 0:
counter += 1
if counter > 1:
print(“История:”,''.join(display_variants),)
if control == 1:
controller = controller - 1
print(“Осталось”,controller,“попыток”)
print(“Введите число”)
your_number = input()
display_variants.append(your_number)
try:
your_number = int(your_number)
except ValueError:
print('Это похоже на числа?!')
display_variants.append(dele)
continue
if your_number < 1:
print(“Читай внимательнее - числа в диапозоне от 1 до 100”)
display_variants.append(dele)
continue
if your_number > 100:
print(“Читай внимательнее - числа в диапозоне от 1 до 100”)
display_variants.append(dele)
continue
if your_number > my_number:
difference = “ - слишком много; ”
display_variants.append (difference)
print(“Не так много!”)
continue
if your_number < my_number:
difference = “ - слишком мало; ”
display_variants.append (difference)
print(“БОЛЬШЕ!”)
continue
if your_number == my_number:
difference = “ - в самый раз!”
display_variants.append (difference)
break
if controller>0:
print(“Вы победили!”)
if controller<1:
print(“Вы проиграли, так как исчерпали все попытки.”)
print(“Правильный ответ:”,my_number,)
print(“История вариантов:”,''.join(display_variants),)
print(“Работа программы завершена”)

Отредактировано The_Tsar_of_Anarchy (Сен. 7, 2016 22:50:35)

Прикреплённый файлы:
attachment _Try to guess the number_.py (2,5 KБ)

Офлайн

#2 Сен. 8, 2016 02:26:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Оптимизация кода

The_Tsar_of_Anarchy
Да и просто замечания по нему будут очень полезны.
В принципе, нареканий нет. Теперь надо учиться структурному программированию. То есть у тебя должны быть подпрограммы, которые вызываются другой подпрограммой.

главная_программа:
вывести_приветствие()
имя = ввести_имя()
вывести_правила_игры()
запустить_основной_диалог(имя)

главная_программа()



Отредактировано py.user.next (Сен. 8, 2016 02:30:30)

Офлайн

#3 Сен. 8, 2016 06:52:35

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Оптимизация кода

The_Tsar_of_Anarchy
 print('Введите число попыток либо “нет” для отказа')
control = 0
dele = ; 
while 1:
controller = input()

Разделять не обязательно
 input('Введите число попыток либо “нет” для отказа')

допустимо
 if not 1 <= your_number <= 100:
   pass

А зачем вам continue вообще непонятно. Оно не выполняет никаких действий.

 difference =  - слишком много; 
display_variants.append (difference)
Зачем вам переменная?
 display_variants.append ( - слишком много; )

все игры с counter и controller лишние
 max_try=input("mt")
for i in range(max_try):
    ...
    if val == number:
        print("ok")
        break
else:
   print("fail")
если пользователь не тупой то введет 100000 если не хочет ограничений



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version