尝试使用下划线和inpu理解Python循环

2024-05-14 21:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

还有一个技巧——如果有人在HackerRank上学习Python,那么知道这一点对于开始学习是至关重要的。

我试图理解这段代码:

    stamps = set()
    for _ in range(int(input())):
        print('underscore is', _)
        stamps.add(raw_input().strip())
        print(stamps)

输出:

    >>>2 
    underscore is 0
    >>>first
    set(['first'])
    underscore is 1
    >>>second
    set(['second', 'first'])
  1. 我把2作为第一个原始输入。函数如何知道我只循环两次?这让我大吃一惊,因为它不是典型的…对于我来说,在xrange(0,2)结构中。

  2. 起初我的想法是下划线重复shell中的最后一个命令。所以我在代码中添加了print语句来查看下划线的值……但是这些值只显示0和1,就像典型的循环结构一样。

我已经读完了这篇文章,我仍然不明白这三种下划线用法中的哪一种正在被使用。

What is the purpose of the single underscore "_" variable in Python?

我刚开始学习Python,所以非常感谢简单的解释!


Tags: the代码in技巧inputis结构first
3条回答

ncoghlan's answer列出了Python中_的3种常规用法:

  1. To hold the result of the last executed statement in an interactive interpreter session. This precedent was set by the standard CPython interpreter, and other interpreters have followed suit
  2. For translation lookup in i18n (imported from the corresponding C conventions, I believe), as in code like:

    raise forms.ValidationError(_("Please enter a correct username"))`
    
  3. As a general purpose "throwaway" variable name to indicate that part of a function result is being deliberately ignored, as in code like:

     label, has_label, _ = text.partition(':')
    

您的问题是在代码的示例中使用了其中的哪一个。答案是这是一个一次性变量(情况3),但其内容打印在这里是为了调试目的。

但是,如果以任何方式使用_作为循环变量,则它不是一般的Python约定。因此,您可能会经常看到:

 for _ in range(10):
     print("Hello world")

其中_立即通知读取器该值不重要,循环只重复10次。

但是在诸如

 for i in range(10):
     do_something(i)

在使用循环变量值的地方,通常使用变量名,例如ij,而不是_

下划线就像程序中的普通变量。

对于任何试图理解下划线和输入如何在循环中工作的人来说——在花了相当长的时间调试和打印之后——下面的代码让我了解了发生了什么。

    for _ in range(int(raw_input())):
        print raw_input()

用户输入:

    2
    Dog
    Cat

输出:

    # no output despite entering 2, but 2 is set as range - loops 2 times
    Dog
    Cat

注意for循环的第一行有int()转换吗?

第一个输入是2,所以int()可以很好地转换它。您可以知道第一行代码现在被忽略了,因为通过int()输入第二个输入'Dog',会产生一个错误。无法将单词转换为整数。

相关问题 更多 >

    热门问题