• Предмет: Информатика
  • Автор: LiTer123
  • Вопрос задан 3 месяца назад

Ниже у меня дано задание, после него будет мой код с вопросом который меня беспокоит, и на который сможет ответить только истинный ценитель Python(net:))

Назовем число красивым, если оно является четырехзначным и делится нацело на 7 или на 17. Напишите программу, определяющую, является ли введённое число красивым. Программа должна вывести «YES», если число является красивым, или «NO» в противном случае.

Формат входных данных
На вход программе подаётся натуральное число.

Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.

Тестовые данные
Номер теста Входные данные Выходные данные
1 1043 YES
2 1045 NO
3 2751 YES
4 2753 NO
5 3262 YES
6 3263 NO
7 3264 YES
8 9359 YES
9 9366 YES
10 9362 NO
11 9996 YES
12 9997 NO
13 9999 NO
14 987 NO
15 994 NO
16 7 NO
17 14 NO
18 17 NO
19 15 NO
20 18 NO
21 1057672 NO
22 594405 NO
23 83521 NO

Мой код который верный
x = int(input())
num = 1000 <= x <= 9999
num2 = x % 7 == 0
num3 = x % 17 == 0
if (num and num2) or (num and num3):
print('YES')
else:
print('NO')

И мой код который не верный, и в нем беспокоит меня всего один вопрос:
Почему у меня тут не проходит ответ, когда я ставлю num вместо x?
x = int(input())
num = 1000 <= x <= 9999
num2 = num % 7 == 0
num3 = num % 17 == 0
if (num and num2) or (num and num3):
print('YES')
else:
print('NO')


shegjfgsgjdvgfkdq: Ex. 1 Look through your active vocabulary and find nouns corresponding to the given verbs, translate them, pay attention to suffixes.
To punch -
To count -
To produce -
To generate -
To invent -
To rely -
To select -
To program -
shegjfgsgjdvgfkdq: Помогите пожалуйста. Я не шарю.

Ответы

Ответ дал: andriiplay
1

Проблема в вашем коде в строках:

num2 = num % 7 == 0

num3 = num % 17 == 0

Здесь вы пытаетесь выполнить операцию получения остатка от деления на переменную num, которая на самом деле является булевой переменной, потому что в предыдущей строке у вас было определение num = 1000 <= x <= 9999.

Ваша ошибка может быть исправлена, если заменить num на x в строках, где вы используете остаток от деления оператором %:

x = int(input())

num = 1000 <= x <= 9999

num2 = x % 7 == 0

num3 = x % 17 == 0

if (num and num2) or (num and num3):

   print('YES')

else:

   print('NO')

Таким образом, ваш код будет работать правильно и выводить ожидаемые результаты.


andriiplay: можно ли лучший ответ?
LiTer123: Подскажите пожалуйста, как понять, что строка является булевой?
LiTer123: Подскажите пожалуйста, как мне понять, что переменная является булевой?
Вас заинтересует