Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2015 01:40:19

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос о вводе с консоли

Столкнулся с задачей в которой исходные данные (которые программа должна будет обработать) представляются в виде ввода четырёх СТРОК с некими значениями. У меня возникли вопросы:
1) как вызывая программу предоставить ей в виде аргументов, несколько строк ?
2) способны ли на такой ввод все консоли ? (в частности консоль Windows)
3) сможет ли такой ввод принять функция sys.argv ?

Я понимаю, что вопрос не совсем по python, но скорее всего у меня по этой задачи ещё вопросы возникнут, так что я решил сразу тут топ создать.

Офлайн

#2 Окт. 3, 2015 02:13:48

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

Вопрос о вводе с консоли

Tucha
1) как вызывая программу предоставить ей в виде аргументов, несколько строк ?
Можно и через стандартный поток ввода (stdin), и через аргументы командной строки вводить. Зависит от задачи.
stdin обычно используется под обрабатываемые данные, а аргументы командной строки - под параметры обработки/вывода.

Tucha
2) способны ли на такой ввод все консоли ? (в частности консоль Windows)
Да. Можно и через stdin, и через аргументы во всех консолях.

Tucha
3) сможет ли такой ввод принять функция sys.argv ?
Сможет. Но данные лучше подавать на stdin.



Отредактировано py.user.next (Окт. 3, 2015 02:14:11)

Офлайн

#3 Окт. 3, 2015 02:25:40

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос о вводе с консоли

py.user.next
Можно и через стандартный поток ввода (stdin), и через аргументы командной строки вводить. Зависит от задачи.
stdin обычно используется под обрабатываемые данные, а аргументы командной строки - под параметры обработки/вывода.
А можно пример ввода ?
Я просто хочу понять как передать аргумент командный строки именно четырьмя строками, а не строку с четырьмя значениями разделённых пробелами.

Офлайн

#4 Окт. 3, 2015 04:55:53

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Вопрос о вводе с консоли

py.user.next
3) сможет ли такой ввод принять функция sys.argv ?
Сможет. Но данные лучше подавать на stdin.
Когда это sys.argv успела стать функцией?
Tucha
Я понимаю, что вопрос не совсем по python
И это правильно что вы с этого начали.
Существует много точек зрения на взаимодействие программ со средой их обитания.
1) Программы реагируют на тыканье в кнопки и подачу напряжения на проводки (ранний дос) Похоже на вашу концепцию.
2) Программы принимают потоки байт преобразуют их и выдают другие потоки байт. И не важно это поток выливается с диска при чтении файла, образуется при тычках в кнопки приходит по сети или есть результат оцифровки звука. (Unix подход).
https://en.wikipedia.org/wiki/Unix_philosophy
ну и так далее…



Офлайн

#5 Окт. 3, 2015 06:28:30

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

Вопрос о вводе с консоли

doza_and
Когда это sys.argv успела стать функцией?
Я что-то даже и не заметил, что он там написал это слово, наискосок читал.

Tucha
А можно пример ввода ?
Я просто хочу понять как передать аргумент командный строки именно четырьмя строками, а не строку с четырьмя значениями разделённых пробелами.
#!/usr/bin/env python3
 
import sys
 
print(sys.argv)
[guest@localhost py]$ ./t.py
['./t.py']
[guest@localhost py]$ ./t.py a
['./t.py', 'a']
[guest@localhost py]$ ./t.py a b c
['./t.py', 'a', 'b', 'c']
[guest@localhost py]$ ./t.py "a b c"
['./t.py', 'a b c']
[guest@localhost py]$ ./t.py "a b c" "d e f"
['./t.py', 'a b c', 'd e f']
[guest@localhost py]$ ./t.py "a b c" "d e f" g h i
['./t.py', 'a b c', 'd e f', 'g', 'h', 'i']
[guest@localhost py]$



Офлайн

#6 Окт. 4, 2015 02:45:41

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос о вводе с консоли

Спасибо всем, с горем пополам разобрался, что такое stdin, stdout (я даже не знал, что есть ещё что то кроме input и sys.argv).
Теперь хоть понимаю, что значит ввод “нескольких строк” в условии задачи.

py.user.next
Я как раз хотел увидеть пример с stdin

Отредактировано Tucha (Окт. 4, 2015 04:01:31)

Офлайн

#7 Окт. 4, 2015 03:27:57

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

Вопрос о вводе с консоли

Tucha
Я как раз хотел увидеть пример с stdin
#!/usr/bin/env python3
 
import sys
 
lines = list(sys.stdin)[:4]
print(lines)
[guest@localhost py]$ ./t.py 
a
b
c c
d
e
f
['a\n', 'b\n', 'c c\n', 'd\n']
[guest@localhost py]$

Tucha
я даже не знал, что есть ещё что то кроме imput
input() тоже с stdin работает.



Отредактировано py.user.next (Окт. 4, 2015 03:29:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version