尝试使用下划线和输入来理解Python循环

jhu*_*ub1 7 python loops input

还有一个提示 - 如果有人在HackerRank上学习Python,那么知道这对于开始是至关重要的.

我正在尝试理解这段代码:

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

输出:

    >>>2 
    underscore is 0
    >>>first
    set(['first'])
    underscore is 1
    >>>second
    set(['second', 'first'])
Run Code Online (Sandbox Code Playgroud)
  1. 我把2作为第一个原始输入.函数如何知道我只循环两次?这让我失望,因为它不是典型的......对于我在xrange(0,2)结构中.

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

我已经阅读了这篇文章,但仍然无法理解使用下划线的3个用法中的哪一个.

Python中单个下划线"_"变量的目的是什么?

我刚刚开始学习Python,所以很容易理解这些简单的解释!

Ant*_*ala 14

ncoghlan的回答列出_了Python 中的3种常规用法:

  1. 在交互式解释器会话中保存最后执行的语句的结果.这个先例是由标准的CPython口译员设定的,其他口译员也纷纷效仿
  2. 对于i18n中的翻译查找(从相应的C约定中导入,我相信),如代码所示:

    raise forms.ValidationError(_("Please enter a correct username"))`
    
    Run Code Online (Sandbox Code Playgroud)
  3. 作为通用的"一次性"变量名称,表示功能结果的一部分被故意忽略,如代码所示:

     label, has_label, _ = text.partition(':')
    
    Run Code Online (Sandbox Code Playgroud)

您的问题是代码中的示例中使用了哪一个.答案是一个一次性变量(案例3),但其内容在此处打印用于调试目的.

但是,_如果以任何方式使用其值,则不能将其用作循环变量.因此,您经常会看到:

 for _ in range(10):
     print("Hello world")
Run Code Online (Sandbox Code Playgroud)

其中_立即向读者发出信号,表明该值并不重要,并且循环仅重复10次.

但是在诸如的代码中

 for i in range(10):
     do_something(i)
Run Code Online (Sandbox Code Playgroud)

在使用循环变量的值的地方,使用变量名称是常规i,j而不是_.