Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2017, 17:32   #11
m-gray
Пользователь
 
Регистрация: 08.04.2017
Сообщений: 12
По умолчанию

Как в цикле записать?, не получается.
m-gray вне форума Ответить с цитированием
Старый 17.04.2017, 20:02   #12
m-gray
Пользователь
 
Регистрация: 08.04.2017
Сообщений: 12
По умолчанию Спасибо, решил

Спасибо, я решил:

Код:
greetings = {}
#Установка флага продолжения опроса.
name_active = True
while name_active:
    #Запрос имени и ответ пользователю.
    name = input("\nКак ваше имя? ")
    greeting = ("Добрый день, " + name.title() + '!')   
    print(greeting)
    #Ответ сохраняется в словаре:
    greetings[name] = greeting
    #Проверка продолжения опроса.
    repeat = input("Хотите продолжить? (д/н)")
    if repeat == 'н':
        name_active = False
        
#Запись в файл                
filename  = 'guest_book.txt'     
with open(filename, 'w') as file_object:
    # Опрос завершен, вывести результаты.
        #print("\n--- Результаты опроса ---")
        for name, greeting in greetings.items():
            guest_text =(name + '\n\t' + greeting)
            file_object.write(guest_text + '\n')
            print(guest_text)
#Чтение файла        
with open('guest_book.txt') as file_object:
    contents = file_object.read()
    print(contents)
m-gray вне форума Ответить с цитированием
Старый 18.04.2017, 07:51   #13
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ваша программа работает, но, увы, не удовлетворяет выданному Вам ТЗ. В условии сказано, что добавление каждой новой строки в файл должно осуществляться "при вводе каждого имени".
Vago вне форума Ответить с цитированием
Старый 18.04.2017, 09:33   #14
nick-one
Пользователь
 
Регистрация: 28.03.2017
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Ваша программа работает, но, увы, не удовлетворяет выданному Вам ТЗ. В условии сказано, что добавление каждой новой строки в файл должно осуществляться "при вводе каждого имени".
Добавлю еще:
в файл пишется приветствие, не думаю что это требовалось;
при следующем запуске программы, предыдущие введенные имена затираются, не тянет на гостевую книгу.
nick-one вне форума Ответить с цитированием
Старый 18.04.2017, 10:25   #15
nick-one
Пользователь
 
Регистрация: 28.03.2017
Сообщений: 35
По умолчанию

решение != ТЗ
ТЗ надо через open(gb,'a')
Код:
import os

gb='guest_book.txt'
if os.path.isfile(gb):
  f = open(gb)
  s=f.read()
  f.close()
  names=s.strip().split('\n')
else:
  names=[]

while "don't stop":
  name = input("Как ваше имя? ")
  if name.title() in names:
    print('Добрый день, %s! Рады видеть Вас снова!' % name.title())
  else:
    print('Добрый день, %s!' % name.title())
    names.append(name.title())
  repeat = input("Хотите продолжить? ([д]/н)")
  if repeat == 'н':
    break

f = open(gb,'w')
f.write('\n'.join(names))
f.close()

Последний раз редактировалось nick-one; 18.04.2017 в 10:30.
nick-one вне форума Ответить с цитированием
Старый 18.04.2017, 15:19   #16
m-gray
Пользователь
 
Регистрация: 08.04.2017
Сообщений: 12
По умолчанию

Спасибо за отклик!
Цитата:
Сообщение от Vago Посмотреть сообщение
Ваша программа работает, но, увы, не удовлетворяет выданному Вам ТЗ. В условии сказано, что добавление каждой новой строки в файл должно осуществляться "при вводе каждого имени".
- это факт. Не знаю как написать при вводе.
m-gray вне форума Ответить с цитированием
Старый 18.04.2017, 15:21   #17
m-gray
Пользователь
 
Регистрация: 08.04.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от nick-one Посмотреть сообщение
решение != ТЗ
ТЗ надо через open(gb,'a')
Код:
import os

gb='guest_book.txt'
if os.path.isfile(gb):
  f = open(gb)
  s=f.read()
  f.close()
  names=s.strip().split('\n')
else:
  names=[]

while "don't stop":
  name = input("Как ваше имя? ")
  if name.title() in names:
    print('Добрый день, %s! Рады видеть Вас снова!' % name.title())
  else:
    print('Добрый день, %s!' % name.title())
    names.append(name.title())
  repeat = input("Хотите продолжить? ([д]/н)")
  if repeat == 'н':
    break

f = open(gb,'w')
f.write('\n'.join(names))
f.close()
Код хороший, буду вникать!

"при следующем запуске программы, предыдущие введенные имена затираются, не тянет на гостевую книгу." - можно поменять 'w' на 'a'.
import os - если честно, я еще не знаю что делает этот модуль.
m-gray вне форума Ответить с цитированием
Старый 18.04.2017, 15:30   #18
m-gray
Пользователь
 
Регистрация: 08.04.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от nick-one Посмотреть сообщение
решение != ТЗ
ТЗ надо через open(gb,'a')
Код:
1. while "don't stop":
Не могу понять это условие, просто строка?
2. repeat = input("Хотите продолжить? ([д]/н)")
Почему [д] в скобках?

Последний раз редактировалось m-gray; 18.04.2017 в 15:34.
m-gray вне форума Ответить с цитированием
Старый 18.04.2017, 16:28   #19
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от m-gray Посмотреть сообщение
Не знаю как написать при вводе.
Как-то так...
Код:
#!/usr/bin/python
# -*- coding: cp1251 -*-

def main():

    print( "\n<Enter> without any name to stop input.\n" )

    while True:
        strName = raw_input( "Hi! What's your name? " )
        if len( strName ) == 0:
            break
        print( "Greetings, " + strName + "!\n" )

    print( "\nChao! Thank you all!" )


main()
Только в цикле вместо вывода на консоль - запись в файл.
Vago вне форума Ответить с цитированием
Старый 18.04.2017, 17:05   #20
m-gray
Пользователь
 
Регистрация: 08.04.2017
Сообщений: 12
По умолчанию

Спасибо.
m-gray вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документации, учебники, уроки и полезные материалы по Python, PyQt, PySide pompiduskus Python 4 22.07.2022 10:16
В модуль поместить функции сортировки символьных и числовых массивов. Подключить созданный модуль и применить эти функции к вводим Tuns Помощь студентам 6 27.05.2014 15:07
Создать собственный модуль и программу, использующую этот модуль. Oraner Паскаль, Turbo Pascal, PascalABC.NET 2 02.12.2012 13:15
Модуль Graph или графический модуль Seferus Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2011 13:15
Типизированные файлы, модуль Crt, Модуль Graph Kate_Fleur Помощь студентам 1 06.05.2010 17:43