在在线竞赛中,如果没有指定输入的长度,并且无法通过程序直接读取输入文件,则可以在C++中使用以下代码:
while (cin >> var)
{
//do something with var
}蟒蛇的等价物是什么?
open() write() ... )。发布于 2015-03-11 15:36:41
Python中没有直接的等效项。但是您可以用两个嵌套循环来模拟它:
for line in sys.stdin:
for var in line.split():如果需要字符串以外的其他内容,则需要在单独的步骤中转换它:
var = int(var)发布于 2015-03-11 15:06:32
这会有帮助的。
import sys
for line in sys.stdin:
#Do stuff发布于 2019-11-05 20:40:06
在C++ cin >> n中,它具有双重性质:它既充当一个布尔表达式,指示它是否读取(真)或没有读取(false)序列中的一个元素,又充当“运算符”中的一个“通道”,以获取一个元素(如果有剩余的话)。遗憾的是,在python中,最接近的是执行n = input(),它也充当“通道”,但不充当布尔表达式。
为了解决这个问题(通过使事物"C++onic“而不是"Pythonic"),您可以定义一个名为cin()的辅助函数。该函数将有一个参数n,它的工作方式实际上就像一个C++按引用传递(即输入/输出参数)一样。为了模拟这种行为,这里我让n成为一个-in元素的列表对象--在这种情况下是整数--利用Python的混叠属性。这样,当n[0]在辅助方法中发生变化时,值的变化也会反映在主方法n[0]值中,每次cin(n)调用返回true.不再做任何事了。
def cin(n):
#function that woks equally to doing cin >> n
try:
n[0] = int(input())
return True
except:
return False
def main():
#C++ like main method (for illustrative/comparative purposes)
n = [0]
while cin(n):
#MESSAGE: do someting with n[0] (watch out, n is list object with one element)
main()例如,在前面的代码中,如果您想要打印数字序列元素的双倍(其中有一个不确定的数字),您只需为以下内容更改行#消息:
print(n[0]*2)或者,另一个例子是,如果您想要实现递归解决方案,以逆序打印序列的元素(也有不定长度),并且不使用包含多个元素的列表,则同样需要为以下内容更改行#消息:
main()
print(n[0])https://stackoverflow.com/questions/28990034
复制相似问题