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

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

11.10.2019, 23:08. Показов 12815. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru