Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужно переделать с Pascal на Python,помогите

Сергей Сергеич Ученик (95), на голосовании 3 года назад
Переделать с Pascal на Python
Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный. Вычисления оформить в виде процедуры.

Uses crt;
type point=record
x,y,u:real;
end;
procedure vvod(var t:point;c:char);
begin
repeat
writeln('Введите координаты точки ',c,' равные одновремено 0');
readln(t.x,t.y);
until(t.x<>0)or(t.y<>0);
end;
procedure ugol(var t:point);
begin
if(t.x=0)then t.u:=90
else t.u:=arctan(abs(t.y)/abs(t.x))*180/pi;
end;
var x,y,z,mn:point;
begin
clrscr;
vvod(x,'X');
vvod(y,'Y');
vvod(z,'Z');
ugol(x);
ugol(y);
ugol(z);
if x.u
Голосование за лучший ответ
Black Afgano Просветленный (22282) 3 года назад
Вот приблизительная трансляция на Python

import math
from collections import namedtuple
from operator import attrgetter

def get_angle(x: float, y: float) -> float:
     if x == 0: return 90.0
     return math.atan(abs(y) / abs(x)) * 180 / math.pi

Point = namedtuple('Point', ['x', 'y', 'angle'])

def get_points() -> dict:
     points = {}
     for char in 'XYZ':
          x, y = map(float, input().split())
          assert x or y, "Координаты не должны равняться 0 одновременно"
          points[char] = Point(x, y, get_angle(x, y))
     return points

print(min(points.values(), key=attrgetter('angle')))
Похожие вопросы