Python

Помогите перевести из паскаля в питон пожалуйста

Program nomerC;
var a,b,c,d,m,p:real;
begin
read(a);
if a=0 then m:=2 else p:=2;
read(b);
if b=0 then m:=m+1 else p:=p+1;
read(c);
if c=0 then m:=m+1 else p:=p+1;
read(d);
if d=0 then m:=m+1 else p:=p+1;
if p>m then write('Yes') else write('No');
end.
Однозначно перевести нельзя, т. к. механизм ввода в Python и Pascal совершенно разный: в Pascal не важно, что между числами - пробел или перевод строки, в Python несколько чисел в одной строке и каждое число на отдельной строке - это совершенно разный код.

a, b, c, d = map(int, input().split()) # 4 числа в одной строке
m = 2 * (a == 0) + (b == 0) + (c == 0) + (d == 0)
p = 2 * (a != 0) + (b != 0) + (c != 0) + (d != 0)
print('Yes' if p > m else 'No')

Если по одному числу в строке, то первая строка кода меняется на:
a, b, c, d = int(input()), int(input()), int(input()), int(input())

А теперь финт ушами:

m + p == 5 - ВСЕГДА. Потому p > m полностью эквивалентно либо p >= 3, либо m <= 2

И весь код можно упростить до:

a, b, c, d = map(int, input().split()) # 4 числа в одной строке
print('Yes' if 2 * (a != 0) + (b != 0) + (c != 0) + (d != 0) >= 3 else 'No')

Проверяем на != 0 в момент ввода, вводим в массив и получаем:

t = [int(i) != 0 for i in input().split()]
print('Yes' if t[0] + sum(t) >= 3 else 'No')
Владимир Неверов
Владимир Неверов
84 226
Лучший ответ
Вроде-как можно сократить:
m, p, a = 1, 1, list(map(float, input().split()))
for i in a: m += a == 0; p += a != 0
print('YES' if p > m else 'NO')
или так
m̵,̵ ̵p̵,̵ ̵a̵ ̵=̵ ̵0̵,̵ ̵0̵,̵ ̵l̵i̵s̵t̵(̵m̵a̵p̵(̵f̵l̵o̵a̵t̵,̵ ̵i̵n̵p̵u̵t̵(̵)̵.̵s̵p̵l̵i̵t̵(̵)̵)̵)̵
f̵o̵r̵ ̵i̵ ̵i̵n̵ ̵r̵a̵n̵g̵e̵(̵l̵e̵n̵(̵a̵)̵)̵:̵ ̵m̵ ̵+̵=̵ ̵(̵a̵[̵i̵]̵ ̵=̵=̵ ̵0̵)̵ ̵+̵ ̵(̵i̵ ̵=̵=̵ ̵0̵)̵;̵ ̵p̵ ̵+̵=̵ ̵(̵a̵[̵i̵]̵ ̵!̵=̵ ̵0̵)̵ ̵+̵ ̵(̵i̵ ̵=̵=̵ ̵0̵)̵
p̵r̵i̵n̵t̵(̵'̵Y̵E̵S̵'̵ ̵i̵f̵ ̵p̵ ̵>̵ ̵m̵ ̵e̵l̵s̵e̵ ̵'̵N̵O̵'̵)̵
Александр Самарин Тогда уж:
m += (a[i] == 0) * (1 + (i == 0))
m = 0
p = 0

a = int(input('Введите а: '))

if a == 0: m = 2
else: p = 2

b = int(input('Введите b: '))
if b == 0: m += 1
else: p += 1

c = int(input('Введите c: '))
if c == 0: m += 1
else: p += 1

d = int(input('Введите d: '))
if d == 0: m += 1
else: p += 1

if p> m: print('Yes')
else: print('No')

ИГ
Иван Громов
9 233