MrMeeseeks
@MrMeeseeks

Как укоротить код?

Пробую новые функции,т.к. недавно только начал изучать python,сделал перезапуск программы через цикл и не понимаю как укоротить
#рандомайзер чисел
import random

def randomazer(random):
    print('Введите от какого и до какого числа рандом')
    print('Введите первое число')
    number = int(input())
    print('Введите второе число')
    number2 = int(input())
    random = random.randint(number,number2)
    print('Сгенерированное число - '+ str(random))

repeatWord = ('д','y')
    
def repeat():
    print('Сгенерировать новое число? (да или нет)')
    return input().lower().startswith(repeatWord)

while True:
    randomazer(random)
    if repeat():
        True  #перезапуск программы,просто чтобы внутри if что-то было,
              #я не знаю почему это работает
    else:
        break


с любым значением в if код работает правильно,но если цикл запускать просто с функцией,а не через if то выполняется неправильно.
И если в if работает любое значение,то ведь скорее всего он может быть и не нужен? :)
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
@dmshar
Не знаю, что вы имеете ввиду, потому что что такое "если цикл запускать просто с функцией,а не через if" , что такое "выполняется неправильно" и что такое "в if работает(?) любое значение" - понять очень сложно, но вот так работает - по моему разумению - правильно.

repeatWord = ('д','y')
while True:
    print('Сгенерировать новое число? (да или нет)')
    if input().lower().startswith(repeatWord):
        pass
    else:
        break


Работает в цикле до тех пор, пока не наберете что-либо, отличное от 'д' или 'y'.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@c00re
Дело в том,что когда вы запускаете repeat она всегда возвращает значение,которое равно булевому True.Из-за этого смысла в if нет.И функцию randomazer тоже необязательно вызывать,т.к она не используется.
Вот укороченный код

repeatWord = ('д','y')
    
def repeat():
    print('Сгенерировать новое число? (да или нет)')
    return input().lower().startswith()

while True:
    repeat()
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
Зачем укорачивать и так короткий код?
Что такое рандомайзер?

repeatWord = ('д','y')
    
def repeat():
    print('Сгенерировать новое число? (да или нет)')
    return input().lower().startswith(repeatWord)

while True:
    randomazer(random)
    repeat()
Ответ написан
MrMeeseeks
@MrMeeseeks Автор вопроса
Вставил весь код,дело в том что без if не включается :
return input().lower().startswith(repeatWord)

И при любом вводе он начинает заново,вместо того чтобы использовать только 'д' или 'y'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы