![](/img/trans.png)
[英]sys.stdin.readline() to read multiple lines from cmd in python in Sublime text3
[英]Using sys.stdin.readline() to read multiple lines from cmd in Python
我想在運行后從命令行輸入輸入
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]
輸入示例可以是:
2 40
20 2
30 3
我的問題是:
1)如何使用我的輸入創建列表數據?
2)如何讓Python知道我已經完成了輸入,它應該執行其余的代碼?
該問題的解決方案取決於您使用的操作系統。
基本上,如果要多行輸入,則必須使用sys.stdin.read()
而不是sys.stdin.readline()
。 由於sys.stdin
在Python中是一個類似於文件的對象,因此read()
方法將一直讀取直到到達文件末尾。 它由特殊字符EOF
(文件結尾)標記。 在不同的操作系統上,有不同的發送方式。
在Windows上 :
輸入后按Ctrl + Z ,然后按Enter :
2 10
20 2
30 3
^Z
在基於Unix的操作系統上 :
輸入后按Ctrl + D 。 無需輸入 (我相信)
如果您想從輸入中獲取列表[2, 10, 20, 2, 30, 3]
,就可以了。 split()
方法按空格(空格,換行符等)分割。
我同意@ Leva7所說的一切。 盡管如此,我還是建議另一個解決方案,對於Python 2使用raw_input
或對Python 3使用input
,如下所示:
args = []
s = raw_input() # input() for Python 3
while s != '':
args.extend([int(arg) for arg in s.strip().split()])
s = raw_input()
當然,這絕不是單線的,但它可以完成工作,而且很容易看到它是如何完成的。 另外,輸入末尾不需要特殊字符。
如果您使用的是Windows,請確保使用換行符完成輸入,否則^ Z(按Ctrl-Z)將包含在輸入中。 還要確保您使用英語語言布局-https: //stackoverflow.com/a/17924627/9205085
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.