Как я могу прочитать случайный символ из простого текстового файла - PullRequest
0 голосов
/ 09 апреля 2019

Я не знаю, как читать случайный символ из текстового файла, и хотел бы узнать, как.

Вот что случилось, когда я начал возиться с питоном! Я знаю, что буду делать что-то подобное позже в школе, поэтому я практикуюсь. Чтение строки будет недостаточно, как вы увидите - я открыт для советов и просто прямой ответ, поскольку я понимаю, что мой код очень неаккуратный. Raspberry Pi с этим кодом работает под управлением Raspbian lite с несколькими дополнительными битами (графический интерфейс, режим ожидания) и запускает python 3.5.3.

Я записываю некоторые из них в текстовый файл:

f = open("selected.txt","w")
chars = 'abcdefghijklmnopqrstuvwxyz'
ucchars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
smbls = '`¬!"£$%^&*()-_=+{[}]:;@~#<,>.?'
nos = '1234567890'
space = ' '

Как это:

usechars = input('Use lower case letters? answer y or n.')
if usechars == 'y':
    f.write(chars)
useucchars = input('Use upper case letters? answer y or n.')
if useucchars == 'y':
    f.write(ucchars)
usesmbls = input('Use symbols? answer y or n.')
if usesmbls == 'y':
    f.write(smbls)
usenos = input('Use numbers 0-9? answer y or n.')
if usenos == 'y':
    f.write(nos)
usespace = input('Use spaces? answer y or n.')
if usespace == 'y':
    f.write(space)

Я хотел бы напечатать выбранное количество случайных символов из текстового файла и распечатать его в оболочке, но я не знаю, как получить случайный отдельный символ из текстового файла. Если есть лучший способ сделать это (возможно, так) или вам нужно больше кода, пожалуйста, сообщите мне. Заранее спасибо.

UPDATE вот код:

f.close()
with open("selected.txt","r") as f:
    contents = f.read
random_character = random.choice(contents)
for i in range(amnt):
    password = ''
    for c in range(length):
        password += random_character
    print(password)

1 Ответ

1 голос
/ 09 апреля 2019

Если файл не очень большой, простой способ выбрать случайный символ - это сначала прочитать его в строку, а затем просто выбрать случайный символ из строки:

import random

with open("selected.txt", "r") as f:
    contents = f.read()  # NOTE the () after read

random_character = random.choice(contents)
print("The random character I've chosen is: ", random_character)

Если вы хотитеВы можете создать строку со случайным выбором, которую вы можете использовать для цикла for, но вы должны выбрать новый случайный символ внутри в цикле:

with open("selected.txt","r") as f:
    contents = f.read()

password = ''
for i in range(amnt):
    random_character = random.choice(contents)
    for c in range(length):
        password += random_character
print(password)
...