Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向现有代码添加循环语句时的Python缩进_Python_Indentation_Python Idle - Fatal编程技术网

向现有代码添加循环语句时的Python缩进

向现有代码添加循环语句时的Python缩进,python,indentation,python-idle,Python,Indentation,Python Idle,在Python中,当您编写100行代码而忘记在某处添加一堆循环语句时,您会怎么做 我的意思是,如果你在某处添加一个while语句,你现在必须缩进它下面的所有行。这并不是说你可以戴上牙套就可以完成。转到每一行并添加制表符/空格。如果将嵌套循环/if/then语句添加到现有代码中会怎么样 我是否缺少一些快捷方式?我认为每个严肃的编辑器或IDE都支持选择多行并按tab键缩进或按Shift-tab键取消缩进所有行的选项。您必须使用编辑器命令重新缩进 记住:美丽总比丑陋好 。。。还有“Python禅宗,由

在Python中,当您编写100行代码而忘记在某处添加一堆循环语句时,您会怎么做

我的意思是,如果你在某处添加一个while语句,你现在必须缩进它下面的所有行。这并不是说你可以戴上牙套就可以完成。转到每一行并添加制表符/空格。如果将嵌套循环/if/then语句添加到现有代码中会怎么样


我是否缺少一些快捷方式?

我认为每个严肃的编辑器或IDE都支持选择多行并按tab键缩进或按Shift-tab键取消缩进所有行的选项。

您必须使用编辑器命令重新缩进

记住:美丽总比丑陋好

。。。还有“Python禅宗,由蒂姆·彼得斯创作”


在IDLE标准python IDE中,选择代码,继续“格式化”,您可以选择缩进区域、删除区域等
  • textmate(可能还有e?):然后选择apple-]
  • bbedit: 同时选择apple-]
  • emacs: 然后选择M-x“缩进区域”
  • 不知道,自动缩进是 在比顿很容易,你必须 努力打破它
  • xcode:不要在xcode中使用python

  • 通常我只需要知道这些。是的,在一块凹凸不平的砖上或下面打一个支架是很容易的,但你知道一周后当你一天都没盯着它看的时候,它会把你搞糊涂。Sry u guys.

    编辑:重写以适应
    文件输入
    的“偏心”*

    好吧,要么这样要么
    }

    *:我最初写这篇文章时使用了
    stdout.writelines
    和一些生成器表达式的简洁组合。不幸的是,该代码不起作用。
    fileinput.input()
    返回的迭代器在调用其
    next
    方法之前不会实际打开文件。它同时在
    sys.stdout
    上运行其粗略的输出重定向魔术。这意味着,如果调用
    sys.stdout.writelines
    并将
    fileinput.input
    迭代器传递给它,则调用和输出将转到原始标准输出,而不是通过
    fileinput
    重新映射到正在处理的文件“当前”。因此,最终的结果是应该替换文件内容的行被打印到终端

    在调用
    stdout.writelines
    之前,可以通过调用fileinput迭代器上的
    next
    来解决此问题,但这会导致其他问题:到达输入文件的末尾会导致在
    file.writelines
    中调用迭代器的
    next
    方法时关闭其句柄。在Python2.6下,之所以会出现这种情况,是因为在从迭代器获取下一个值后,没有检查(在实现
    writelines
    的C代码中)文件是否仍然打开,并且文件句柄是否为非零。我认为在2.7下,它只是抛出了一个例外,所以这个策略可能会在那里起作用


    上述代码实际上测试正确。

    True。我想你不能使用普通的旧记事本。不管你是否使用Python,如果你添加了大约100行代码的控制结构,但没有缩进,你应该没收你的键盘。如果你需要添加大约100行代码的循环,特别是Python代码,你所关心的比担心如何缩进它们更重要。我建议您花一些时间重新设计代码,并将其重构为可管理的块、对象和组件。+1到@detly。尽管从技术上讲,你不需要在其他语言中正确缩进,但任何试图阅读它的人都会对你恨之入骨(这可能包括一个月后你自己,当你觉得它不新鲜的时候)。或者只需按TAB键(或Ctrl-])缩进选择。尽管这种方式一开始可能并不明显,除非你是荷兰人。。。等等,我们又在玩什么?注意:上面的代码实际上不起作用<使用
    fileinput
    进行code>inplace处理不符合最少意外的原则。
    # python -c "import this"
    
    def indent_code(filename, startline, endline):
        from fileinput import input
        from itertools import izip, count
    
        all_remaining = count()
        def print_lines(lines, prefix='', range=all_remaining):
            for _, line in izip(range, lines):
                print prefix + line,
    
        lines = input(filename, inplace=1)
        print_lines(lines, range=xrange(1, startline))  # 1-based line numbers
        print_lines(lines, '    ', xrange(startline, endline + 1)) # inclusive
        print_lines(lines)
    
    def main():
        import argparse
        parser = argparse.ArgumentParser()
        parser.add_argument('filename')
        parser.add_argument('startline', type=int)
        parser.add_argument('endline', type=int)
        ns = parser.parse_args()
        indent_code(ns.filename, ns.startline, ns.endline)
    
    if __name__ == '__main__':
        main()