Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 15.11.2014, 13:20   #1
(Нафаня)
Форумчанин
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Адрес: Воронеж
Сообщений: 56
Репутация: 21

icq: 362718918
По умолчанию Питон. Проблема с отрицательными числами

Проблема в том, что если в файле написать отрицательные координаты, то программа их не очень хочет принимать. Ошибка следующая:
Код:

Traceback (most recent call last):
  File "C:\Users\Olva\Desktop\Учеба\4 курс\Zadachi_Python\Задачи Python\1\1.py", line 29, in <module>
    x1, y1 = int(float(fd1[i])), int(float(fd1[i+2]))
ValueError: could not convert string to float: -

Не могу понять как исправить и что вообще исправлять



Код:

# -*- coding: utf-8 -*-
import math
k = 0#schetchik povorotov na levo
#putaemsya otkrit file, esli ego net, vudast oshibku
try:
       f = open("1_1.txt","r")
except IOError:
        print ("No file")
#chitaem iz faila        
fd = f.read()
print(fd)
fd1 = []
with open('1_1.txt') as input_file:
         for line in input_file.read():
                fd1.append(line)
                if line == " ":
                      input_file.close()
                if line == "\n":
                      input_file.close()
M=int(float(fd1[0]))
print"Shtraf za odno narushenie ",M,"000 rub"

a = []
j = 2
while j<=len(fd1)-14:
       a = a + [j]
       j = j + 4
for i in a:
        x1, y1 = int(float(fd1[i])), int(float(fd1[i+2]))
        x2, y2 = int(float(fd1[i+4])), int(float(fd1[i+6]))
        x3, y3 = int(float(fd1[i+8])), int(float(fd1[i+10]))
        x4, y4 = int(float(fd1[i+12])), int(float(fd1[i+14]))
        n1 = x2 - x1
        n2 = y2 - y1
        n3 = x4 - x3
        n4 = y4 - y3
        n = n1*n4-n2*n3

        if n>0:
               k = k + 1
print "Soversheno ",k," narushenii"
shtraf = M * k
print "V itoge shtraf sostavlyaet",shtraf,"000 rub"

Условие:
«Штраф за левые повороты». В городе водителям запрещено выполнять левые
повороты. За каждый такой поворот водитель должен уплатить штраф в размере М рублей.
Для слежки за водителями в городе установлена компьютерная система, фиксирующая
координаты автомобиля в начале движения, в конце движения и во время поворота.
Исходные данные (структура входного файла разрабатывается самостоятельно):
M – штраф за выполнение левого поворота,
(xi, yi) – координаты автомобиля в процессе движения, i: 1,2, … N
Требуется по заданной последовательности координат движения вычислить сумму
штрафа водителя.
Справка:
Если вектор a образует с осью Ох угол α, а вектор b – угол β (представьте, что вектора a и b
находятся в одной плоскости), то для векторного произведения справедлива формула [a &#215; b]=
0 ∙ i + 0 ∙ j + (|a| ∙ |b| ∙ sin(β-α ))∙ k, где i, j, k – единичные векторы пространства. Это означает,
что для ненулевых векторов векторное произведение равно нулю тогда и только тогда, когда
векторы параллельны. Если поворот от вектора а к вектору b по наименьшему углу
выполняется против часовой стрелки, то [a &#215; b] > 0, если по часовой стрелке, то [a &#215; b] < 0.
__________________
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума   Ответить с цитированием
Старый 15.11.2014, 14:10   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

А как файл выглядит? Сама конвертация верная, а вот считывается судя по всему ерунда. Файл приложить можешь?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 15.11.2014, 17:52   #3
GetMax
Участник клуба
 
Регистрация: 21.10.2010
Адрес: Рязань
Сообщений: 588
Репутация: 181

skype: MaximALL89
По умолчанию

Попробуй так читать из файла
Код:

for line in input_file.read().split():

__________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума   Ответить с цитированием
Старый 16.11.2014, 23:39   #4
(Нафаня)
Форумчанин
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Адрес: Воронеж
Сообщений: 56
Репутация: 21

icq: 362718918
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как файл выглядит? Сама конвертация верная, а вот считывается судя по всему ерунда. Файл приложить можешь?
txt файл, в нем след координаты:
2
2 -1
3 2
1 5
5 6
-2 8
Первая 2 - количество левых поворотов
так выглядит путь
C3eKxTtftk8.jpg
__________________
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума   Ответить с цитированием
Старый 17.11.2014, 09:20   #5
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Опа! Так может твой код символ читает а не число?
Ты бы прописала в коде вывод считанного в консоль питона - посмотришь как он считываает.
А вот совет GetMax стоит опробовать.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 17.11.2014, 13:10   #6
(Нафаня)
Форумчанин
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Адрес: Воронеж
Сообщений: 56
Репутация: 21

icq: 362718918
По умолчанию

Спасибо! Сейчас попробую)
__________________
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа не работает с отрицательными числами. Почему? I love bellydance Помощь студентам 3 06.11.2013 10:34
разброс с отрицательными и положительными числами Leshiy1 Паскаль 11 03.01.2011 06:31
прога на асемблере не работает с отрицательными числами frankfish Помощь студентам 1 12.03.2009 10:05


17:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru