In the task (except for the solution algorithm itself), it is necessary to implement data reception via
stdin , and output via
stdout . Before that, I usually implemented the reception through
input , and the output through
print , or simply returned the value without printing through
How to receive data using
stdout is not catching.
Huge request, give a link or example code to understand.
Answer 1, authority 100%
sys.stdout objects (text streams , as a rule), which in general can be of any type (if their interface suffices file -like) and can be overridden by anyone (IDLE, bpython, ipython, IDE, win-unicode-console, etc). Sometimes it is sufficient to provide an object that supports a single
.write () method if you only want the
print () function to support. Otherwise, even an instance of
io.TextIOWrapper (the default type
sys.stdout ) may not be sufficient if
.fileno () does not return a real file descriptor (see Redirect stdout to a file in Python? ).
When Python starts up,
sys.stdout usually point to standard I / O streams inherited from the parent process or received from the console. Interactive I / O is usually associated with a terminal. From the shell, it is easy to redirect I / O from a file, pipe
$ python your-program.py & lt; input-file # `sys .__ stdin__` is the input file $ echo abc | python your-program.py # `sys .__ stdin__` is a pipe (` echo` writes from one end, we read from the other)
Working directly with
sys.stdout is the same as with other text files. For example, to read lines of text from stdin and write the entered characters (Unicode codepoint) on each line in reverse order to stdout :
#! / usr / bin / env python3 import sys for line in sys.stdin: print (line.rstrip ('\ n') [:: - 1])
The encoding used by
sys.stdout to convert text to bytes and back may vary depending on the environment. To avoid krakozyab or
UnicodeEncodeError exception due to work with arbitrary Unicode characters in the Windows console and other platforms follow the links here that show
win-unicode-console (PEP 528 maybe will remove this package ),
LC_ * (locale),
PYTHONIOENCODING solutions. PEP-538, PEP-540 implemented in Python 3.7 forces Python to use utf-8 in more cases, making problems with I / O encodings much less likely by default.
print () is a handy wrapper around
sys.stdout.write () .
input () can often be thought of as a wrapper around
sys.stdin.readline () for interactive input (maintains input history, editing with
readline module, if available). For advanced support for interactive input in the terminal, have a look at
#! / usr / bin / env python from prompt_toolkit import prompt # $ pip install prompt_toolkit if __name__ == '__main__': answer = prompt ('Give me some input:') print ('You said:% s'% answer)
Answer 2, authority 60%
stdout are file-like objects provided by the OS.
To read and write to them, you need to import sys –
import sys .
sys.stdin.read () use to read from
to write to
stdout , you can use
print (this is how it is used – the most common method of writing to stdout ). those.
print writes to
import sys str = sys.stdin.read () print str
def countdistinctfivisors (n, start = 2): if n == 1: return 1 else: result = 0 for i in range (start, n + 1): if n% i == 0: result + = countdistinctfivisors (n // i, i + 1) return result print (countdistinctfivisors (int (input ())))