#python #loops
#python #циклы
Вопрос:
Я пытаюсь выполнить цикл и удвоить число, пока в нем не появятся все цифры 0-9, это работает, но мой оператор if содержит много логических выражений и выглядит уродливо, я пытался использовать if (‘0123456789’ в first_num), но не работает… У кого-нибудь есть идея, как сделать оператор if более красивым?
all_numbers = '0123456789'
first_num = int(input("Enter a number you want to multiply: "))
second_num = int(input("Enter how many attempts you want to make: "))
count = 0
while(second_num != 0):
second_num = second_num - 1
if('0' in str(first_num) and '1' in str(first_num) and
'2' in str(first_num) and '3' in str(first_num) and
'4' in str(first_num) and '5' in str(first_num) and
'6' in str(first_num) and '7' in str(first_num) and
'8' in str(first_num) and '9' in str(first_num)):
break
first_num = first_num * 2
count = count 1
print(str(count))
Комментарии:
1. Не имеет отношения к вашей проблеме, но зачем сначала преобразовывать входные данные в
int
, а затем преобразовывать вstr
для условия? Почему бы не сохранить входные данные в виде строки, а затем преобразовать вint
, когда вам нужно значение в виде целого числа?2. Не могли бы вы написать пример ввода и пример вывода, пожалуйста?
3. Хороший момент, я их изменю. Я просто ввел int для ввода по привычке
4. пример ввода: first_num = 1 и second_num = 1000. Вывод должен быть 68
Ответ №1:
Сделайте set
из цифр чисел и сравните их:
all_numbers = set("0123456789")
...
if all_numbers == set(str(first_num)):
break
Ответ №2:
all_numbers = '0123456789'
first_num = int(input("Enter a number you want to multiply: "))
second_num = int(input("Enter how many attempts you want to make: "))
count = 0
#Loop thorough the 0 to 9 and check
#Please fix the indentation as I am writing it directly
while(second_num != 0):
second_num = second_num - 1
flag = 0
for i in range(10):
if str(i) not in str(first_num):
flag=1
break
if flag==0:
break
first_num = first_num * 2
count = count 1
print(str(count))