Skip to content

Hw 1#1

Open
RuslanAxe wants to merge 4 commits intohomework_python_mainfrom
HW_1
Open

Hw 1#1
RuslanAxe wants to merge 4 commits intohomework_python_mainfrom
HW_1

Conversation

@RuslanAxe
Copy link
Copy Markdown
Owner

No description provided.

Copy link
Copy Markdown

@samodurOFF samodurOFF left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Руслан работа неплохая, но есть над чем поработать.

Comment on lines +8 to +10
a = int(input("Введите первую цифру: "))
b = int(input("Введите вторую цифру: "))
c = int(input("Введите третью цифру: "))
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Руслан, как видно из примера в условии задачи на вход должно подаваться трехзначное число, но никак не цифры этого числа.

a = int(input("Введите первую цифру: "))
b = int(input("Введите вторую цифру: "))
c = int(input("Введите третью цифру: "))
sum = (a+b+c)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
sum = (a+b+c)
sum = a + b + c

c = int(input("Введите третью цифру: "))
sum = (a+b+c)
print("Сумма чисел")
print(a,b,c,'=', sum)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
print(a,b,c,'=', sum)
print(a, b, c, '=' , sum)

# 24 -> 4 16 4
# 60 -> 10 40 10

s = int(input())
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Неплохо бы проверять входные данные на корректность, иначе мы можем получить нерелевантные результаты, которые не будут соотноситься с входными данными. Например, если подать на вход 11, то результаты будут такими же: 1, 4, и 1, что в сумме дает только 6, куда же делись остальные 5?

# 60 -> 10 40 10

s = int(input())
print((s//6), ((s//6)*4), (s//6)) No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Suggested change
print((s//6), ((s//6)*4), (s//6))
var = s // 6
print(var, var * 4, var)

# 123456 -> no

n = input()
print("YES" if sum(map(ord, n[:3])) == sum(map(ord, n[3:])) else "NO") No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Уже видел такое решение, 1 в 1. Принять не могу, так как уверен, что вы его не объясните. Но я могу ошибаться. Поэтому в ответном комментарии жду объяснение, а также пояснение, что с вашим решением не так.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Принимаемое на ввод значение заносим в переменную n
далее система выводит "yes" или "no" соответственно, если сумма равна первым трем числам (первые три индекса) и вторым трем числам (вторые 3 индекса), встроенная функция мар применяется к каждому объекту (ord Возвращает числовое представление для указанных символов до 3 элемента включительно, так как двоеточие перед цифрой 3 и соответственно для вторых трех элементов (4,5,6 элемент числа)
Решение не универсальное и подходит только для 6-ти значных чисел, написать универсальную программу не хватает знаний и мозгов на данном этапе.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Принимаемое на ввод значение заносим в переменную n далее система выводит "yes" или "no" соответственно, если сумма равна первым трем числам (первые три индекса) и вторым трем числам (вторые 3 индекса), встроенная функция мар применяется к каждому объекту (ord Возвращает числовое представление для указанных символов до 3 элемента включительно, так как двоеточие перед цифрой 3 и соответственно для вторых трех элементов (4,5,6 элемент числа) Решение не универсальное и подходит только для 6-ти значных чисел, написать универсальную программу не хватает знаний и мозгов на данном этапе.

Тут вы ошиблись. Функция ord возвращает не числовое представление для указанный символов. Она возвращает номер символа из таблицы символов Unicode. То есть для каждого символа из строки 0123456789 функция оrd вернет 48, 49, 50, 51, 52, 53, 54, 55, 56, 57. Поэтому ваша программа находит сумму порядковых номеров символов в Unicode таблице, а не сумму цифр в числе.

Исправьте код, чтобы он работал корректно.

n = int(input())
m = int(input())
k = int(input())
if k < n * m and ((k % n == 0) or (k % m == 0)):
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if k < n * m and ((k % n == 0) or (k % m == 0)):
if k < n * m and (k % n == 0 or k % m == 0):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants