Найти - Пользователи
Полная версия: random.choice
Начало » Python для новичков » random.choice
1
webstghost
Чем отличается
f = open(r'file.txt')
line = random.choice(f.readlines())
f.close
line = line
от
line = 'случайно выбранная вручную строка из file.txt'
?
Скрипт не хочет корректно работать с первым вариантом.
fata1ex
>>> from random import choice
>>> def foo():
...     with open('file', 'r') as f:
...         print choice(f.readlines())
...         
>>> foo()
5
>>> foo()
2
>>> foo()
4

[00:54] home:~ cat file
1
2
3
4
5
webstghost
Я недостаточно ясно описал проблему.
Мой скрипт выбирает случайную строку без проблем, и ‘print line’ выдает ‘случайно выбранная вручную строка из file.txt’.
Но видимо формат данных отличается от того, если я просто задам значение для line:
line = 'случайно выбранная вручную строка из file.txt'
line в моем скрипте, это рандомный http заголовок.
Проблема в том, что при его случайном выборе запрос возвращает пустоту. Но если задать заголовок напрямую все проходи успешно. При этом ‘print’ выдает идентичные ‘line’ в обоих случаях.
fata1ex
webstghost
Чем отличается
f = open(r'file.txt')
line = random.choice(f.readlines())
f.close
line = line
от
line = ‘случайно выбранная вручную строка из file.txt’
?
Скрипт не хочет корректно работать с первым вариантом.



Я недостаточно ясно описал проблему.
Мой скрипт выбирает случайную строку без проблем, и ‘print line’ выдает ‘случайно выбранная вручную строка из file.txt’.
Но видимо формат данных отличается от того, если я просто задам значение для line:
line = ‘случайно выбранная вручную строка из file.txt’
line в моем скрипте, это рандомный http заголовок.
Проблема в том, что при его случайном выборе запрос возвращает пустоту. Но если задать заголовок напрямую все проходи успешно. При этом ‘print’ выдает идентичные ‘line’ в обоих случаях.

Яснее не стало.

Функция random.choice принимает объект, поддерживающий протокол итератора, и возвращает “случайный” объект из переданного множества. У меня нет идей, как вы полагаете читатели должны вас понять. Приведите хотя бы ваш код,
reclosedev
readlines() оставляет символ возврата строки ‘\n’:
>>> f.readlines()[0]
 '450\n'
Чтобы их не было:
f.read().splitlines()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB