Учу основы Python :)
Скрипт не работает как надо, пользователь задаёт имя и все соответствующие сообщения Ани или Миши (со строк текстового файла) выводятся на экран :
Текстовый файл:
Аня:
"Привет"
Миша:
"Как дела"
Аня
"Нормально"
и т.д.
Мой код:
import os
import sys
def read_file(filename):
try:
messages = []
with open(filename, 'r') as log_file:
lines = log_file.readlines()
with open(filename, 'r') as log_file:
for line in enumerate(lines):
messages.append(line)
return messages
except FileNotFoundError as e:
print('Error: The file "' + filename + '" could not be found.')
sys.exit()
def display_entry(name, message):
print(f'[{name}] --> ' + message)
def main():
if len(sys.argv) < 2:
print('Error: you must specify filename.')
sys.exit()
filename = sys.argv[1]
messages = read_file(filename)
search_name = input('Enter the name to search for: ').capitalize()
for name, message in messages:
if search_name == name:
display_entry(name[0], message)
if __name__ == '__main__':
main()
Python
Скрипт не работает как надо
Импорты сис и ос, траи, эксепты, дефы, __main__... Это точно ваш код, а не скопипасченный?
Скрипт нормальный, вы его неправильно используете видимо
Вам его надо запускать сразу с параметром наименования файла
Скрипт нормальный, вы его неправильно используете видимо
Вам его надо запускать сразу с параметром наименования файла
Если копируете сюда код, используйте внизу кнопку <>
Вывести текстовый файл на экран можно двумя строками кода
Вывести текстовый файл на экран можно двумя строками кода
with open("path/to/file") as f:
print f.read()
# Ключевое слово with автоматически закрывает файл, когда
# вывод файла закончится
Алишер Зекен
Спасибо за совет, но эти три метода обязаловка по условию
Алишер Зекен
import sys
def read_file(filename):
messages = []
with open(filename, 'r') as log_file:
lines = log_file.readlines()
with open(filename, 'r') as log_file:
for line in lines:
messages.append(line)
return messages
def display_entry(name, message):
print(f'[{name}] --> ' + message)
def main():
filename = sys.argv[1]
messages = read_file(filename)
search_name = input('введите имя: ').capitalize()
for name, message in messages:
if search_name == name:
display_entry(name[0], message)
if __name__ == '__main__':
main()
Cан Саныч
Ошибка
в строке 19: for name, message in messages:
ValueError: too many values to unpack (expected 2)
ValueError: слишком много значений для распаковки (ожидается 2)
попробуйте заменить 19-б строку на такую.
в строке 19: for name, message in messages:
ValueError: too many values to unpack (expected 2)
ValueError: слишком много значений для распаковки (ожидается 2)
попробуйте заменить 19-б строку на такую.
for name in messages:
Алишер Зекен
Что-то странное получилось:
[Аня] --> Аня
[Аня] --> Привет
[Аня] --> Миша
[Аня] --> Нормально
[Аня] --> Аня
[Аня] --> Привет
[Аня] --> Миша
[Аня] --> Нормально
Алишер Зекен
Пользователь задаёт имя и все соответствующие сообщения Ани или Миши (со строк текстового файла) выводятся на экран :
Текстовый файл .txt:
Аня:
"Привет"
Миша:
"Как дела"
Аня:
"Нормально"
Если ввести имя Аня результат поиска должен быть:
[Аня] --> Привет
[Аня] --> Нормально
Текстовый файл .txt:
Аня:
"Привет"
Миша:
"Как дела"
Аня:
"Нормально"
Если ввести имя Аня результат поиска должен быть:
[Аня] --> Привет
[Аня] --> Нормально
Cан Саныч
Я от питона давно отошел.
Заходите на https://www.cyberforum.ru
в раздел Python.
Я на этом форуме с 2011 года сижу.
Там точно с кодом помогут профессионально.
Заходите на https://www.cyberforum.ru
в раздел Python.
Я на этом форуме с 2011 года сижу.
Там точно с кодом помогут профессионально.
Девочка, не тем ты себе голову забиваешь, чтобы понимать такой код и использовать так много разных методов из библиотек дополнительных, тебе, сначала, нужно и вправду изучить основы питона, а не использовать н-ное количество доп. библиотек. Всё это можно написать в раз 10 легче и оптимизированнее
Алишер Зекен
Злой ты!!!
Ihsan Ulug
Я не злой, а лишь говорю факты
def read_file(filename):
messages = []
with open(filename, 'r', encoding='utf-8') as log_file:
lines = log_file.readlines()
with open(filename, 'r', encoding='utf-8') as lines:
for line in lines:
messages.append(line.replace('\n', '').strip())
message_dict = {}
for i in range(0, len(messages), 2):
if messages[i] not in message_dict:
message_dict[messages[i]] = [messages[i + 1]]
else:
message_dict[messages[i]].append(messages[i + 1])
return message_dict
def display_entry(name, message):
print(f'[{name}:] --> ' + message)
def main():
filename = 'dialog.txt' # Сюда нужно вставить путь к файлу
messages = read_file(filename)
search_name = input('введите имя: ').capitalize() + ':'
if search_name in messages:
message = ', '.join(messages[search_name])
display_entry(search_name, message)
else:
print('Такого имени не обнаружено!')
if __name__ == '__main__':
main()
Алишер Зекен
Здравствуйте Юсуф, спасибо вам за ответ, но нам нельзя использовать \n или dict(), только list или tuple
Похожие вопросы
- Ошибка при написании скрипта на python syntax error: invalid syntax Что делать?
- Шаблон/скрипт или заказать сайт под ключ?
- Помогите улучшить скрипт python
- Помогите пожалуйста написать скрипт на языке Python 3
- Напишите пожалуйста скрипт на языке Python 3
- Roblox программирование помощь со скриптом
- Python и JavaScript - на каком языке пишутся скрипты/вирусы/трояны?
- Ошибка "405 Not Allowed" при попытке авторизоваться на сайте через скрипт на Python
- Вопрос программистам самоучкам, которые уже работают!
- Майнинг криптовалюты как работает
Помогите!