I'd like to type in my input from command lines after running
if __name__ == "__main__":
data = list(map(int, sys.stdin.readline().split()))
print(data)
n, capacity = data[0:2]
values = data[2:(2 * n + 2):2]
weights = data[3:(2 * n + 2):2]
A sample input could be:
2 40
20 2
30 3
My questions are:
1) How to create the list data using my input?
2) How can I let Python know I have finished the input and it should execute the rest of the code?
The solution to this problem depends on the OS you're using.
Basically, if you want multiline input, you'll have to use sys.stdin.read()
instead of sys.stdin.readline()
. Since sys.stdin
is a file-like object in Python, the read()
method will read until it reaches the end of a file. It is marked by a special character EOF
(end-of-file). On different OS'es there is a different way of sending it.
On Windows:
Press Ctrl+Z after your input and then press Enter:
2 10
20 2
30 3
^Z
On a Unix-based OS:
Press Ctrl+D after your input. No Enter is required (I believe)
If you want to get a list [2, 10, 20, 2, 30, 3]
from your input, you're fine. The split()
method splits by whitespace (spaces, newlines, etc.).