繁体   English   中英

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

[英]What's the equivalent for while (cin >> var) in python?

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

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

python的等价物是什么?

  • 不使用任何与文件相关的函数,例如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

在 C++ 中, cin >> n具有双重性质:它既充当布尔表达式,指示它是否已读取 (true) 或尚未读取 (false) 序列中的元素,又充当“通道输入”运算符,获取元素(如果还有剩余)。 可悲的是,在 python 中,最接近的开箱即用是做n = input() ,它也充当“通道”,但不充当布尔表达式

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

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

编写以下代码

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM