Уведомления

Группа в Telegram: @pythonsu

#1 Май 14, 2017 14:14:55

TrustInMe
Зарегистрирован: 2017-05-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помочь с правильным использованием условных операторов!

Доброго времени суток. Изучаю второй день пайтон, программистского опыта вообще нет, пытаюсь написать первую простенькую программу для считывания/копирования/рерайта файлов.

 print('Команды для работы с txt файлами: ')
print('/read - прочитать файл.')
print('/create - создать файл.')
print('/copy - копировать файл.')
print('/add - добавить текст в файл')
print('/end - завершить программу')
command = str(input('Введите команду: '))
#read
if command = /read:
    filename = input('Укажите файл (формат должен содержать имя.разрешение, например text.txt) :')
    file = open( filename, 'r')
    print(file.read())
    file.close()
#create
filename2 = input('Введите желаемое имя файла (с указанием формата .txt): ')
text = input('Какой текст хотите поместить в файл? :')
file2 = open( filename2, 'w')
file2.write(text)
file2.close()
#copy
filename3 = input('Введите название копируемого файла?: ')
filename4 = input('Введите имя нового файла ')
file3 = open(filename3,'r')
file4 = open(filename4, 'w')
file4.write(file3.read())
file3.close()
file4.close()
print('Копирование успешно завершено!')
#r - режим чтения
# w - режим перезаписи
# a - добавление в файл

Суть проблемы: хочу чтобы при вводе пользователем команды с файлом выполнялось определённое действие, в зависимости от команды. Задумывал всё это сделать через условные операторы if\elif\else, но как я понял это не возможно. Либо я что-то не правильно понял, посему прошу помощи.

Собственно, вопросы:
Правильно ли я понял, что if принимает только булеан значения?
Как грамотно можно реализовать идею?

Отредактировано TrustInMe (Май 14, 2017 14:15:54)

Офлайн

#2 Май 14, 2017 15:25:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Прошу помочь с правильным использованием условных операторов!

  
>>> def f():
...     command = input('Ввведите команду: ')
...     if command == '/read':
...         print('Команда /read')
...     elif command == '/create':
...         print('Команда /create')
...     else:
...         print('Команда unknown')
... 
>>> f()
Ввведите команду: /create
Команда /create
>>> f()
Ввведите команду: /read
Команда /read
>>> f()
Ввведите команду: /x
Команда unknown
>>>

TrustInMe
Правильно ли я понял, что if принимает только булеан значения?
Как грамотно можно реализовать идею?
Возьми какую-нибудь книжку и прочитай её. Методом тыка в программировании что-то изучать - лишняя и бесполезная трата времени.

Можешь эту прочитать (есть и русский перевод)
http://getpython3.com/diveintopython3/



Отредактировано py.user.next (Май 14, 2017 15:27:58)

Офлайн

#3 Май 17, 2017 16:25:41

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Прошу помочь с правильным использованием условных операторов!

второй день нужно уже функции и циклы изучать и тогда программа получиться.
как вариант на скорую руку

 def separator(x):
      if x == 'read':  read_()# если код условия короткий то можно и так оформить
      elif  x == 'create':  create_('w')          
      elif x == 'copy':  copy_()       
      elif x == 'add' : create_('a')
      elif x == 'end' : print('программа завершина')
      else: print('нет такой команды !!!')
       
def read_():
      filename =  '{}.{}'.format(input('Укажите имя файла :'),'txt')
      with open(filename) as inp:
            print(inp.read())
# так как создание файла и дозапись в файл отличаются только параметрами открытия файла
# то используем одну функцию с разными параметрами
def create_(x):
      filename = '{}.{}'.format(input('Укажите имя файла :'),'txt')
      text = input('Какой текст хотите поместить в файл? :')
      with open(filename,x) as out:
            out.write(text)
      if x == 'w': print('создан файл',filename)
      else: print('дописан файл',filename)
                  
def copy_():
      filename =  '{}.{}'.format( input('Введите название копируемого файла?: '),'txt')
      nev_filename ='{}.{}'.format( input('Введите имя нового файла '),'txt') 
      with open(filename) as inp, open(nev_filename,'w') as out:
                  out.write(inp.read())
      print('Копирование успешно завершено!')
print('Команды для работы с txt файлами: ')
command = ('read - прочитать файл.','create - создать файл.',
          'copy - копировать файл.','add - добавить текст в файл',
           'end - завершить программу')
for i in command :
      print(i)
      
control = 'ok'
while control != 'end' :
      control = input('Введите команду: ')
      separator(control)

Отредактировано marvellik (Май 17, 2017 16:27:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version