首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,What (cin >> var)的等效值是什么?

在python中,What (cin >> var)的等效值是什么?
EN

Stack Overflow用户
提问于 2015-03-11 14:58:31
回答 5查看 31.1K关注 0票数 8

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

代码语言:javascript
复制
while (cin >> var)
{
    //do something with var
}

蟒蛇的等价物是什么?

  • 而不使用任何与文件相关的函数(如open() write() ... )。
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-03-11 15:36:41

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

代码语言:javascript
复制
for line in sys.stdin:
    for var in line.split():

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

代码语言:javascript
复制
        var = int(var)
票数 4
EN

Stack Overflow用户

发布于 2015-03-11 15:06:32

这会有帮助的。

代码语言:javascript
复制
import sys

for line in sys.stdin:
    #Do stuff
票数 2
EN

Stack Overflow用户

发布于 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.不再做任何事了。

代码语言:javascript
复制
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()

例如,在前面的代码中,如果您想要打印数字序列元素的双倍(其中有一个不确定的数字),您只需为以下内容更改行#消息:

代码语言:javascript
复制
print(n[0]*2)

或者,另一个例子是,如果您想要实现递归解决方案,以逆序打印序列的元素(也有不定长度),并且不使用包含多个元素的列表,则同样需要为以下内容更改行#消息:

代码语言:javascript
复制
main()
print(n[0])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28990034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档