#python
Вопрос:
тема: Если A и B являются целыми числами от 1 до 9, попробуйте найти те (A, B) значения, которые могут удовлетворять следующим условиям: AAB BB=BAA
Что я пишу:
for A in range (1,10): for B in range(1,10): if #I have no idea... print(A,B)
Комментарии:
1. Как вы добираетесь от
B
тудаBB
? Автор* 11
:. ХочешьBA
?10 * B A
.2. A*100 A*10 B*10 2*B == B*100 A*10 A ?
3. @PatrickArtner : можно сократить как : 9*A = 8*B
Ответ №1:
Ну что ж, начнем с того, что AAB
равно A * 100 A * 10 B
.
Примените это к другим, разработайте выражения и проверьте их на равенство.
Например(1), чтобы проверить , ABBA AB
ровно на семь больше, чем BBBB
, вы могли бы использовать что-то вроде:
abba = A * 1000 B * 100 B * 10 A # or A * 1001 B * 110 ab = A * 10 B bbbb = B * 1000 B * 100 B * 10 B # or B * 1111 if abba ab == bbbb 7: do_something()
(1) Надеюсь, достаточно близко, чтобы вы могли решить этот вопрос для своего конкретного вопроса, но не настолько близко, чтобы вы могли просто плагиат 🙂
Ответ №2:
Вы можете использовать:
from itertools import product [(A,B,f'{A}{A}{B} {B}{B} = {B}{A}{A}') for A,B in product(range(1,10), range(1,10)) if A*100 A*10 B B*10 B == B*100 A*10 A]
выход: [(8, 9, '889 99 = 988')]
Использование классического цикла:
for A in range(1,10): for B in range(1,10): if A*100 A*10 B B*10 B == B*100 A*10 A: print(f'A={A}, B={B} -gt; {A}{A}{B} {B}{B} = {B}{A}{A}')
выход:
A=8, B=9 -gt; 889 99 = 988
Комментарии:
1. Вы можете , но, если вы не сможете объяснить это учителю, у вас будут большие проблемы, если предположить, что это классная работа, что кажется вероятным 🙂
2. @paxdiablo Не упоминается, что это задание :p (скорее всего, оно одно, но в соответствии с правилами оно должно быть явно указано)
Ответ №3:
Вы действительно можете упростить это, просто приведя к строкам и обратно к целым числам. Поскольку это достаточно небольшое число n, никаких проблем с производительностью не возникнет.
Вы могли бы применить математику, добавив коэффициенты 10
в соответствующих местах, но для меня это самое очевидное, что происходит.
for A in range (1, 10): for B in range(1, 10): AAB = int(str(A) str(A) str(B)) BB = int(str(B) str(B)) BAA = int(str(B) str(A) str(A)) if AAB BB == BAA: print(A, B)
Или с f-строками.
for A in range (1, 10): for B in range(1, 10): AAB = int(f'{A}{A}{B}') BB = int(f'{B}{B}') BAA = int(f'{B}{A}{A}') if AAB BB == BAA: print(A, B)
Комментарии:
1. Должно быть в диапазоне 0,9
2. @PtitXav: вам следует прочитать вопрос более внимательно 🙂 Цифры
1..9
включены.3. Извините, пропустил это
4. Возможно, было бы лучше использовать f-строки 😉
5. @mozway Да, я люблю f-струны и использую их исключительно во всей своей профессиональной работе. 🙂 Однако я заметил, что новички сторонятся их, поэтому я выбросил первый вариант.
Ответ №4:
Сначала давайте упростим выражение. AAB BB = BAA
== 100A 10A B 10B B = 100B 10A A
== 99A = 88B
== 9A = 8B
.
Как видите, мы уже можем предложить правильный ответ ( A
должно быть значение B
множителя и наоборот).
Но если вам действительно нужно написать какой-то код на Python, вот вам:
for a in range(1, 10): for b in range(1, 10): if a * 9 == b * 8: print(f'A={a}, B={b}')
Выход: A=8, B=9