什么是python中while(cin>> var)的等价物?

时间:2015-03-11 14:58:32

标签: python c++ input

在在线竞赛中,当未指定输入长度并且无法直接通过程序读取输入文件时,可以在C ++中使用此代码:

while (cin >> var)
{
    //do something with var
}

python的等价物是什么?

  • 不使用任何与文件相关的功能,例如open() write() ...

4 个答案:

答案 0 :(得分:3)

Python中没有直接的等价物。但您可以使用两个嵌套循环来模拟它:

for line in sys.stdin:
    for var in line.split():

如果您需要字符串以外的其他内容,则需要在单独的步骤中进行转换:

        var = int(var)

答案 1 :(得分:2)

这可能会有所帮助。

import sys

for line in sys.stdin:
    #Do stuff

答案 2 :(得分:0)

编写以下代码

while True: a=input() if(a==''): break else .....    

在其他部分,您编写要执行的代码 如果您想在代码中使用int,请将其转换为int并使用它

答案 3 :(得分:0)

在C ++中,cin >> n具有双重性质:它既充当布尔表达式,它表示是已读取(true)还是未读取(false)序列中的元素,并作为“渠道进入” 运算符来获取元素(如果还有剩余的话)。可悲的是,在python中,您可以直接使用的最接近的方法是n = input(),它也可以充当“通道输入”,而但不能充当布尔表达式

为了解决这个问题(通过使事情变成“ C ++ onic”而不是“ Pythonic”),您可以定义一个辅助函数,方便地称为cin()。此函数将具有一个参数n,该参数实际上将像C ++传递引用一样工作(即输入/输出参数)。为了模拟这种行为,在这里我利用Python列表的别名属性,使n成为具有一个元素的列表对象-在这种情况下为整数-。这样,当辅助方法中的n[0]发生更改时,每次n[0]调用返回true时,值更改也将反映在主方法cin(n)的值中……而无需进行任何其他操作。

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()

例如,在前面的代码中,如果要打印具有不确定数量的数字序列的双精度元素,则只需更改以下行的#MESSAGE行:

print(n[0]*2)

或者,作为另一个示例,如果您想实现一个递归解决方案,以相反的顺序打印序列中的元素(长度也不确定),并且具有不使用一个以上元素的列表的约束,那么您将再次,需要将以下行更改为#MESSAGE:

main()
print(n[0])