在python中,while(cin >> var)的等价物是什么?
What's the equivalent for while (cin >> var) in python?
在线竞赛中,当未指定输入长度且无法直接通过程序读取输入文件时,可以在C++中使用以下代码:
while (cin >> var)
{
//do something with var
}
蟒蛇的等价物是什么?
- 不使用任何与文件相关的功能,例如
open() write() ...
在 Python 中没有直接的等价物。但是你可以用两个嵌套循环来模拟它:
for line in sys.stdin:
for var in line.split():
如果您需要字符串以外的其他内容,则需要在单独的步骤中进行转换:
var = int(var)
这可能会有所帮助。
import sys
for line in sys.stdin:
#Do stuff
In C++ cin >> n
具有双重性质:它既充当布尔表达式,指示它是否已读取(true)或未读取(false)序列中的元素,并充当获取元素(如果有剩余元素)的"channel in"运算符。可悲的是,在python中,你可以开箱即用的最接近的是做n = input()
,它也充当"通道",但不充当布尔表达式。
为了解决这个问题(通过使事情变得"C++onic"而不是"Pythonic"),你可以定义一个辅助函数,方便地称为cin()
。这个函数将有一个参数n
,它实际上就像一个C++传递引用(即输入/输出参数)一样工作。为了模拟这种行为,在这里我利用 Python 列表的别名属性,将n
设置为具有一个元素(在本例中为整数)的列表对象。这样,当辅助方法n[0]
发生变化时,每次调用返回 true 时,值的变化也会反映在 main 方法中n[0]
值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])
std::cin
的一个关键功能是它跳过空格(由于这个原因,竞争编程问题是空格和换行符分开)。我建议像其他答案一样一次读取和处理一行,但可以在生成器中使用str.split()
来模拟一次读取一个数字,就像C++ std::cin >> n
用法一样:
import sys
def stdin_gen():
for x in sys.stdin.read().split():
yield int(x)
cin = stdin_gen()
x = next(cin)
y = next(cin)
print(x, y)
编写以下代码
while True:
a=input()
if(a==''):
break
else
.....
.
在 else 部分中,您编写要执行的代码如果你想在你的代码中使用 int 把它转换成 int 并使用它
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- EASTL矢量<向量<int>>连续的
- python集合的C++等价物是什么.计数器
- C++中是否存在 std::conditional 的懒惰等价物?
- std::endl,在 Python 中是否有等价物?(返回 + 刷新)
- 在本征C++中 MKL 的函数"zgges"等价物是多少?
- 在C++中使用std或boost库的Qtimer等价物是什么
- GLM中的Java Matrix4.transform等价物
- 对于std::bitset,是否有一个ffs()等价物
- std::move() 或其在局部变量上的显式等价物可以允许 elision 吗?
- 这个 matlab 代码的C++等价物是什么(fread matlab vs fread C/C++)?
- 对于wchar_t,字符(0)或'