С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/64: Рейтинг темы: голосов - 64, средняя оценка - 4.66
-12 / 6 / 4
Регистрация: 19.01.2017
Сообщений: 584

Шахматы и натуральные числа

11.10.2019, 23:08. Показов 12625. Ответов 4

Студворк — интернет-сервис помощи студентам
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:
первое число—номер вертикали (при счете слева направо),
второе—номер горизонтали (при счете снизу вверх). Даны
натуральные числа k, l, m, n, каждое из которых не пре*восходит восьми. Требуется:
а) Выяснить, являются ли поля (k, l) и (m, n) полями
одного цвета.
6) На поле (к, l) расположен ферзь. Угрожает ли он
полю (m, n)?
в) Аналогично б), но ферзь заменяется на коня.
г) Выяснить, можно ли с поля (k, l) одним ходом ладьи
попасть на поле (m, n). Если нет, то выяснить, как это
можно сделать за два хода (указать поле, на которое при*водит первый ход).
д) Аналогично г), но ладья заменяется на ферзя.
е) Аналогично г), но ладья заменяется на слона.
Предполагается, что указанные поля имеют один и тот
же цвет.

Спасибо.

Исправьте пожалуйста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import math
a = input("Введите текущую координату фигуры(вертикаль): ")
b = input("Введите текущую координату фигуры(горизонталь): ")
c = input("Введите координату для хода(вертикаль): ")
d = input("Введите координату для хода(горизонталь): ")
if (a==c) and (b==c): print("Фигура может сделать ход")
else: print("Фигура НЕ может сделать ход")
if (a==c) and (b==c): #ладья
if (abs(a-c) == abs(b-d): #слон
if (abs(a-c)==1 or abs(b-d)==1: #король
if (abs(a-c) == abs(b-d) or a == c or b == d: #ферзь
if((abs(abs(a-c)-2)<0.5) and (abs(abs(b-d)-1)<0.5)
******* or (abs(abs(a-c)-1)<0.5) and (abs(abs(b-d)-2.0)<0.5)): #конь
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2019, 23:08
Ответы с готовыми решениями:

Даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m
помогите плиз Даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m

Даны натуральные числа m, n. Получить все их натуральные общие кратные, меньшие mn
даны натуральные числа m,n. Получить все их натуральные общие кратние, менше mn.

Даны натуральные числа от 0 до n (n<99) и число m. И найти квадрат первого числа больше m
Даны натуральные числа от 0 до n (n&lt;99) и число m. И найти квадрат первого числа больше m. Python

4
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.10.2019, 02:35
Like_society, Начать нужно с того, что, когда Вы копируете сюда код своей программы, используйте в окне кнопку Python ('Выделить код Python') и туда, между тегами, вставляйте свою программу, что бы не пропадали отступы из Вашей программы. Тогда будет проще отвечать на Ваш вопрос, учитывая, что ошибка у Вас может быть и в неправильных отступах. Отступы являются частью синтаксиса Python.

Добавлено через 3 минуты
А еще на вскидку, у Вас лишняя скобка в строке 9. Так же Вы не верно используете синтаксис импорта модуля. И еще не понятно, почему Вы дали другие имена переменным, не те, что в задании. Это не ошибка, но не удобно для проверки кода.
1
-12 / 6 / 4
Регистрация: 19.01.2017
Сообщений: 584
12.10.2019, 19:23  [ТС]
Поднять тему

Добавлено через 5 часов 17 минут
В чём ошибка?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import math
k = input("Введите текущую координату фигуры(вертикаль): ")
l = input("Введите текущую координату фигуры(горизонталь): ")
m = input("Введите координату для хода(вертикаль): ")
n = input("Введите координату для хода(горизонталь): ")
if (k==m) and (k==m): print("Фигура может сделать ход")
else: print("Фигура НЕ может сделать ход")
if (k==m) and (l==m): #ладья
if (abs(k-m) == abs(l-n): #слон
if (abs(k-m)==1 or abs(l-n)==1: #король
if (abs(k-m) == abs(l-n) or k == m or l == n: #ферзь
if((abs(abs(k-m)-2)<0.5) and (abs(abs(l-n)-1)<0.5)
******* or (abs(abs(k-m)-1)<0.5) and (abs(abs(l-n)-2.0)<0.5)): #конь
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
13.10.2019, 03:17
Лучший ответ Сообщение было отмечено Like_society как решение

Решение

Like_society, Сколько же у Вас здесь ошибок, жуть. Замучаюсь все перечислять. Со скобками Вы так и не разобрались. Количество закрывающих скобок должно быть равно количеству открывающих.
Комментарии на экран не выводятся. Поэтому как минимум для отладки, нужно выводить результат с помощью print.
Я исправил скобки, заменил комментарии на print, и использовал для наглядности для print отступы.
Исправил то, как вы импортиркете модуль. Если оставить как у Вас, то для каждой функции из модуля нужно спереди писать имя модуля.
Теперь по крайней мере отладчик не ругается и запускает код.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from math import *
k = input("Введите текущую координату фигуры(вертикаль): ")
l = input("Введите текущую координату фигуры(горизонталь): ")
m = input("Введите координату для хода(вертикаль): ")
n = input("Введите координату для хода(горизонталь): ")
if (k==m) and (k==m): print("Фигура может сделать ход")
else: print("Фигура НЕ может сделать ход")
if (k==m) or (l==m):
   print('ладья')
if abs(k-m) == abs(l-n):
   print('слон')
if abs(k-m)==1 or abs(l-n)==1:
   print('король')
if abs(k-m) == abs(l-n) or k == m or l == n:
   print('ферзь')
if ((abs(abs(k-m)-2)<0.5) and (abs(abs(l-n)-1)<0.5)
    or (abs(abs(k-m)-1)<0.5) and (abs(abs(l-n)-2.0)<0.5)):
    print('конь')
Но алгоритм у Вас не верный и поэтому программа выдает не верный результат. Разбирайтесь с алгоритмом.

Добавлено через 27 минут
Like_society, Я внес еще ряд исправлений.
input возвращает строку. Поэтому что бы использовать числа, нужно строки преобразовать в числа с помощью функции int.
И сделал как должно работать для ладьи, для других фигур сделайте сами.
Строки 6 и 7 не нужны, поэтому я их задокументировал.
И на будущее. И в математике и в информатике принято первым числом указывать строку, а вторым колонку.

Добавлено через 1 минуту
Забыл завести исправленный код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from math import *
k = int(input("Введите текущую координату фигуры(вертикаль): "))
l = int(input("Введите текущую координату фигуры(горизонталь): "))
m = int(input("Введите координату для хода(вертикаль): "))
n = int(input("Введите координату для хода(горизонталь): "))
#if (k==m) and (k==m): print("Фигура может сделать ход")
#else: print("Фигура НЕ может сделать ход")
if (k==m) or (l==n):
   print('ЛАДЬЯ может сделать ход')
else:
    print('ЛАДЬЯ не может сделать ход')
if abs(k-m) == abs(l-n):
   print('слон')
if abs(k-m)==1 or abs(l-n)==1:
   print('король')
if abs(k-m) == abs(l-n) or k == m or l == n:
   print('ферзь')
if ((abs(abs(k-m)-2)<0.5) and (abs(abs(l-n)-1)<0.5)
    or (abs(abs(k-m)-1)<0.5) and (abs(abs(l-n)-2.0)<0.5)):
    print('конь')
Добавлено через 2 часа 6 минут
Цитата Сообщение от Viktorrus Посмотреть сообщение
И на будущее. И в математике и в информатике принято первым числом указывать строку, а вторым колонку.
Однако в шахматах принято первым указывать колонку в виде буквы, а вторым строку в виде цифры.
Поэтому в данном случае Ваш подход оправдан.
1
-12 / 6 / 4
Регистрация: 19.01.2017
Сообщений: 584
13.10.2019, 09:10  [ТС]
Viktorrus, Спасибо большое, за помощь. Вы очень меня выручили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2019, 09:10
Помогаю со студенческими работами здесь

Даны натуральные числа p и q. Получить все делители числа q, взаимнопростые с p
как исправить, чтобы выводились только те делители, которые взаимнопросты с p? x=int(input('x=')) y=int(input('y=')) i=2 k=0 ...

Данные натуральные числа n и m. Получить произведение m первых цифр числа n
Данные натуральные числа n и m. Получить произведение m первых цифр числа n. Помогите, пожалуйста

Написать программу, которая находит все четные натуральные числа не более числа N
Друзья, помогите, пожалуйста, решить задачу Задача: Напишите программу, которая находит все четные натуральные числа не более...

Даны натуральные числа n,m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m
Даны натуральные числа n,m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m. На языке Python.

Даны натуральные числа от 0 до 700. Найти все трехзначные числа, у которых нечетные сотни
Даны натуральные числа от 0 до 700. Найти все трехзначные числа, у которых нечетные сотни


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru