在在线竞赛中,当未指定输入长度并且无法直接通过程序读取输入文件时,可以在C ++中使用此代码:
while (cin >> var)
{
//do something with var
}
python的等价物是什么?
open() write() ...
答案 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])