***我没有很好地解释这一点,所以希望这个编辑更有意义:基本上我必须编写适用于大量测试用例的代码,下面的输入只是一个例子。所以我无法手动输入我的功能
说我有以下输入:
0
4
0,2,2,3
我需要生成某种类型的输出,比如
1
我该怎么做?
我的意思是,如果我通常遇到问题,我可以定义一个函数然后手动输入值,但是如何读取原始数据(对数据执行一系列功能/操作)?
(对于我应该在STDIN上接收输入的作业 - >并在STDOUT上打印正确的输出
答案 0 :(得分:2)
STDIN只是由sys.stdin
表示的文件(或类似文件的对象);您可以将其视为普通文件并从中读取数据。你甚至可以迭代它;例如:
sum = 0
for line in sys.stdin:
item = int(line.strip())
sum += item
print sum
或只是
entire_raw_data = sys.stdin.read()
lines = entire_raw_data.split()
... # do something with lines
此外,您可以迭代地调用raw_input()
,它返回发送到STDIN的连续行,或者甚至将其转换为迭代器:
for line in iter(raw_input, ''): # will iterate until an empty line
# so something with line
相当于:
while True:
line = raw_input()
if not line:
break
# so something with line
另请参阅:https://en.wikibooks.org/wiki/Python_Programming/Input_and_output
答案 1 :(得分:2)
我们可以在这种情况下轻松使用raw_input()
:
text_input = raw_input("Enter text:")
如果您使用的是Python 3,则可以采用相同的方式使用input()
:
text_input = input("Enter text:")
或者,如果您更喜欢使用命令行参数运行程序,请使用sys.argv
import sys
for i in sys.argv:
if i >= 1:
command = i
#do something with your command
这是一个很好的阅读:http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch06s03.html
修改强>
好的,请在这里理解真正的问题。
简单方法:您将数据存储在文本文件中,并使用您的程序进行阅读。
f = open("path/to/command.txt", 'r')
commmands = f.read()
这样您就可以快速处理数据。处理完毕后,您可以将其写入另一个文件:
output_file = open("path/to/output.txt", 'w')
output_file.write(result)
关于如何处理命令文件,您可以自己构建它并使用str.split()
方法处理它,然后循环它。
提示:所以你不要忘记关闭文件,建议使用with
语句:
with open('file.txt', 'w') as f:
#do things
f.write(result)
有关文件处理的更多信息:
http://docs.python.org/3.3/tutorial/inputoutput.html#reading-and-writing-files
希望有所帮助!
答案 2 :(得分:1)
您可以使用函数raw_input()
从标准输入读取,然后根据需要进行处理。
答案 3 :(得分:1)
使用这个raw_input()它是基本的python输入函数。
myInput = raw_input()
有关原始输入的更多信息,请参阅:
答案 4 :(得分:1)
通常你想这样做:
the_input = input(prompt) # Python 3.x
或
the_input = raw_input(prompt) # Python 2.x
然后:
print(output) # Python 3.x
或
print output # Python 2.x
但是,你也可以(但可能不想)这样做:
import sys
the_input = sys.stdin.readline()
bytes_written = sys.stdout.write(output)
这或多或少是print
和input
在幕后所做的事情。 sys.stdin
,sys.stdout
(和sys.stderr
)就像文件一样工作 - 您可以读取和写入它们等。在Python术语中,它们被称为类文件对象。
根据我的理解,你想要这样的东西:
def f(x, y, z):
return 2*x + y + z + 1
a = int(input("Enter a number: ")) # presuming Python 3.x
b = int(input("Enter another number: "))
c = int(input("Enter the final number: "))
print(f(a, b, c))
如果运行,那将看起来像这样:
>>> Enter a number: 7
>>> Enter another number: 8
>>> Enter the final number: 9
>>> 32