Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2015 20:08:41

C++MC
Зарегистрирован: 2015-01-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Пожалуйста, помогите перевести с С++ на Питон

Условие задачи:
Ввести с клавиатуры вещественную матрицу размерностью 5x5. Определить:
1) сумму отрицательных элементов в четных столбцах;
2) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Решение на С++:

const x=5,y=5;
int i,j;
float sum=0, massiv,st=0; //описание массива
cout<<RUS(“Введите massiv\n”);
for(i=0;i<x;i++) //ввод массива
for(j=0;j<y;j++) cin>>massiv;
cout<<“massiv\n“;
for(i=0;i<x;i++) //вывод массива
{cout<<”\n”; for(j=0;j<y;j++) cout<<' ‘<<massiv;}

for(j=1;j<x;j=j+2)
{ for(i=0;i<y;i++)
{if(massiv<0)
{sum=massiv+sum;}
}
}
cout<<“\n Summa=”<<sum<<’\n';

for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
if (massiv<0)
{
for(int j=0;j<y;j++)
st=massiv+st;break;
}
}
cout<<“\Summa ”<<st;

Если что, я в 9 классе)
Заранее большое СПАСИБО!

Офлайн

#2 Янв. 20, 2015 10:52:57

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Пожалуйста, помогите перевести с С++ на Питон

Если по аналогии с С++.

a = 5
b = 5
otr_v_nechet_stb=0.0
mas = []
def CheckFloat(s): # проверка значения на корректность
    try: 
        float(s)
        return True
    except ValueError:
        return False
# ввод значений
for x in range(a):
    mas.append([])
    for y in range(b):
        print("Введите значение mas[%d,%d]"%(x,y))
        r = input()
        while(CheckFloat(r)==False):
            print("Введите корректное значение mas[%d,%d]"%(x,y))
            r = input()
        mas[x].append(float(r))
# вывод в читаемом виде
for y in range(b):
    print(mas[y])
# сама задача
for y in range(b):
    if(min(mas[y])<0):
        print("Строка %d содержит отрицательное значение и сумма её равна %f"%(y,sum(mas[y])))
    for x in range(a):
        if(mas[y][x])<0 and x%2==0:
            otr_v_nechet_stb+=mas[y][x]
print("Сумма отрицательных элементов в четных столбцах равна %f"%(otr_v_nechet_stb))

Но хотелось бы увидеть true-питоновское решение.
Гуру питона может оптимизируют это как надо.

Есть ответ из дубль темы в ветке для экспертов через numpy - http://python.su/forum/topic/26033/?page=1#post-139262
Есть ответы из дубль темы в ветке “центр помощи” - http://python.su/forum/topic/26032/?page=1



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Янв. 20, 2015 15:23:16)

Офлайн

#3 Янв. 20, 2015 11:29:34

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Пожалуйста, помогите перевести с С++ на Питон

alexbadaloff
вот немного ваш код переделал

a, b = 5, 5
otr_v_nechet_stb=0.0
mas = []
# ввод значений
for x in range(a):
    mas.append([])
    for y in range(b):
        r = input("Введите значение mas[%d,%d] - "%(x,y))
        while(not r.replace('.','',1).isdigit()):
            r = input("Введите корректное значение mas[%d,%d] - "%(x,y))
        mas[x].append(float(r))
# вывод в читаемом виде
print(*mas, sep='\n')
# сама задача
for y in range(b):
    if min(mas[y]) < 0:
        print("Строка %d содержит отрицательное значение и сумма её равна %f"%(y,sum(mas[y])))
    for x in range(0, a, 2):
        if mas[y][x] < 0:
            otr_v_nechet_stb += mas[y][x]
print("Сумма отрицательных элементов в четных столбцах равна %f"%(otr_v_nechet_stb))



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Янв. 20, 2015 11:36:41)

Офлайн

#4 Янв. 20, 2015 13:24:39

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Пожалуйста, помогите перевести с С++ на Питон

terabayt
.isdigit()):
Я изначально так написал и это не работает для отрицательных значений.
>>> 
Введите значение mas[0,0] - -2
Введите корректное значение mas[0,0] - 2



————————–
Истина где-то рядом

Офлайн

#5 Янв. 20, 2015 13:53:56

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Пожалуйста, помогите перевести с С++ на Питон

alexbadaloff
Я изначально так написал и это не работает для отрицательных значений.
и снова написал ответ не проверяя ))
можно так
        r = input("Введите значение mas[%d,%d] - "%(x,y)).replace('-','',1)
        while(not r.replace('.','',1).isdigit()):



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version