Форум сайта python.su
0
Привет.
Не могу понять свою ошибку. Не удаляется конец строки /n - смотрю в дебаггере в Wing IDE
Да и если раскоментирую #int(line) - то напишут про /n
Что я не правильно делаю?
import io import random import math fn = open("number.txt", mode="w") i = 0 while i<=10: plot = str(random.uniform(-10.00,10.00)) + "\n" fn.write(plot) i = i+1 fn.close() fn2 = open("number.txt") for line in fn2: line.rstrip() #int(line) fn2.close
Отредактировано molebox (Фев. 28, 2014 12:47:08)
Офлайн
Строки в питоне это неизменяемая последовательность. Т.е. Вы можете только создать новую строку на основе преобразования старой. Например
new_str = ''.join([line.rstrip() for line in fn2])
Офлайн
0
Т.е. нужно копировать из line в новую переменную строку, уже без знака /n ?
Сделал так:
fn2 = open("number.txt") for line in fn2: line2 = line.rstrip() fn2.close
Нужно было сначала float использовать, чтобы сконвертировать строку в цифровое значение, а затем уже привести float в Intline = float(line) line = int(line)
Отредактировано molebox (Фев. 28, 2014 14:43:05)
Офлайн
857
molebox
Возник другой вопрос:
line = -4.5526186318
Как сделать так, чтобы округлить это значение до -5 и сконвертировать в Int ?
>>> import math >>> >>> n = -4.5526186318 >>> math.floor(n) -5 >>> type(math.floor(n)) <class 'int'> >>>
Офлайн
0
py.user.next , спасибо. Значит есть несколько способов округления.
Int (n) - округлит до -4
math.floor(n) - округлит до -5
Нужно почитать про них немного.
Я тут вычитал у Марка Лутца, что оказывается, чтобы избавиться от \n , не обязательно использовать rstrip. Когда конвертируешь строковое число с помощью float/int - python автоматом избавляется от \n
Офлайн
857
moleboxint не округляет, просто дробную часть отбрасывает
Int (n) - округлит до -4
Офлайн
19
moleboxЕще есть Decimal.quantize()
Значит есть несколько способов округления.
Офлайн