我完全是盲目的编程人员学习蟒蛇。不幸的是,事实上这块代码表示不同层次的压痕是一个主要的绊脚石。我想知道如果有任何可用的工具,让我写代码使用牙套或一些其他代码块分隔,然后转换成这种形式纳入一个适当缩进表示,蟒蛇口译员可以使用?

有帮助吗?

解决方案

您的问题有一个解决方案,它与python本身一起分发。 pindent.py ,它位于Windows安装的Tools \ Scripts目录中(我的路径是C:\ Python25 \ Tools \ Scripts),看起来你必须从svn.python.org获取如果你正在运行Linux或OSX。

它会在块关闭时添加注释,或者在放入注释时可以正确缩进代码。以下是pindent通过命令输出的代码示例:

pindent.py -c myfile.py

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar

原始的 myfile.py 是:

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
   else:
       print 'oops!'

您还可以使用 pindent.py -r 根据注释插入正确的缩进(有关详细信息,请阅读pindent.py的标题),这应该允许您在python中进行编码而无需担心缩进。

例如,运行 pindent.py -r myfile.py 会将 myfile.py 中的以下代码转换为相同的正确缩进(以及注释)代码。由上面的 pindent.py -c 示例生成:

def foobar(a, b):
if a == b:
a = a+1
elif a < b:
b = b-1
if b > a: a = a-1
# end if
else:
print 'oops!'
# end if
# end def foobar

我有兴趣了解您最终使用的解决方案,如果您需要任何进一步的帮助,请对此帖发表评论,我会尽力提供帮助。

其他提示

我个人怀疑目前是否存在,因为许多Python afficionados都喜欢这样的事实,即Python是这样的,空格分隔。

然而,我从未真正将其视为可访问性问题。也许这是向Python提出的错误报告?

我假设您在这里使用屏幕阅读器输出?因此标签似乎是“不可见的”。给你?使用盲文输出,它可能更容易阅读,但我可以理解这可能是多么令人困惑。

事实上,这对我来说非常有趣。我希望我知道足够能够编写一个能够为你做这个的应用程序。

我认为这肯定是我将在错误报告中提出的内容,除非您已经自己或想要这样做。

编辑:此外,<注明 / john-millikin“> John Millikin 还有 PyBraces 这可能是可行的解决方案给你,并且可能会根据你的编码技巧一起被黑客攻击,而这正是你所需要的(我希望如果是这样的话,你会把它发布给像你这样的人使用)

编辑2:我只是向python错误跟踪器报告了这个

虽然我不是盲人,但我听说过有关 Emacspeak 的好消息。自1998年 8.0发布以来,他们已经拥有了Python模式(他们似乎要发布28.0!)。绝对值得一试。

你应该能够配置你的编辑器来说出标签和空格 - 我知道在大多数编辑器中显示空白是可能的,所以在某个地方必须有一个可访问性选项来说明它们。 / p>

如果失败了,那就是 pybraces ,这是一个恶作剧,但可能实际上是通过一些工作对你有用。

如果您使用的是Windows,我强烈建议您从以下位置查看EdSharp: http://empowermentzone.com/EdSharp.htm 它支持所有领先的Windows屏幕阅读器,它可以配置为代表缩进级别的代码,或者它有一个内置的实用程序,称为PyBrace,可以转换为支持语法,如果你想这样做,它支持所有程序员在我们的文本编辑器中期待的各种其他功能。我已经使用它多年了,从PHP到JavaScript,从HTML到Python,我喜欢它。

我很感激您的问题,但是您认为您正在指定实施而不是您需要解决的问题。如何使用屏幕阅读器告诉您缩进级别,而不是转换为大括号?

例如,某些人已经开始研究vim语法着色代表python缩进级别。也许修改后的语法着色会产生屏幕阅读器会读取的内容?

所有这些“不,你不能”答案的类型真的很烦人。当然可以。

这是一个黑客,但你可以做到。

http://timhatch.com/projects/pybraces/

使用自定义编码将大括号转换为缩进块,然后再将其移交给解释器。


顺便说一下,作为python的新手 - 我不接受甚至允许大括号/泛型块分隔符背后的推理......除了那些是python开发者的偏好。如果您正在对代码进行一些自动处理或在不了解空白区域的编辑器中工作,那么大括号至少不会被意外吃掉。如果您自动生成代码,则无需跟踪缩进级别就很方便。如果你想使用python做一个perl-esque单行,你就会自动瘫痪。如果没有别的,只是作为一种保障。如果您的1000行python程序获取所有选项卡怎么办?你会逐行去找出缩进的位置吗?

询问它总是得到一个诙谐的回应,比如“__ future __ import braces”中的“just do”,“正确配置你的IDE”,“无论如何都要好一点,所以习惯它” ; ......

我看到了他们的观点,但是嘿,如果我想,我可以在每一行之后加上一个分号。所以我不明白为什么每个人都对括号的事情如此坚定。如果您需要使用您的语言来强制缩进,那么您首先就不会这样做。

只是我的2c - 无论如何我都会使用牙套。

在寻找一个可Python IDE,找到这一点,并决定回答。在窗户的爪:

  1. 设置中心通过紧迫 JawsKey+6 (在数量行上述信件)中你最喜欢的文本编辑器。如果爪提示创建一个新的配置文件,同意。
  2. 在搜索领域,型"缩"
  3. 只会有一个结果:"说缩进字符"。把这个上。
  4. 享受!

唯一的事情是令人沮丧的是,我们不能享受码的实例的网站上(因为缩进口语在浏览器是不太舒服—它会产生多余的语音).

快乐码从另一个Python初学者)。

我使用eclipse和pydev扩展,因为它是一个我有很多经验的IDE。我也很欣赏它为语句,循环等编码提供的智能缩进。我已将pindent.py脚本配置为外部工具,我可以在当前关注的python模块上运行,这使我的生活更轻松,所以我可以看到什么是关闭,不得不经常检查缩进。

有各种答案解释如何做到这一点。但我建议不要走这条路。虽然您可以使用脚本进行转换,但这会使团队项目难以工作。

我的建议是配置屏幕阅读器以宣布标签。这并不像听起来那么烦人,因为它只会说“缩进5”。而不是“标签选项卡标签选项卡标签”。此外,只有在更改时才会读取缩进,因此您可以在不听到缩进级别的情况下浏览整个代码块。通过这种方式,听到压痕并不比听到牙箍更冗长。

由于我不知道您使用的是哪种操作系统或屏幕阅读器,我很遗憾无法给出实现此目的的确切步骤。

Edsger Dijkstra 使用 if if fi do~od 在他的”Guarded Command Language“中,这些似乎来自 Algol68的的。在 RosettaCode.org 中也使用了一些示例python保护块。

fi = od = yrt = end = lambda object: None;
class MyClass(object):
    def myfunction(self, arg1, arg2):
        for i in range(arg1) :# do
            if i > 5 :# then
                print i
            fi
        od # or end(i) #
    end(myfunction)
end(MyClass)

空白错位的python代码可以明确地解除拼写,并且如果使用的话可以重新缩进 保护块if / fi,do / od&amp; try / yrt with semicolons&quot ;;&quot;分开陈述。非常适合明确的杂志列表或从网页剪切/粘贴。

编写一个简短的python程序来插入/删除保护块和分号应该很容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top