标签: indentation

Python期望一个缩进块

我是Python的新手,想根据几何分布生成一些数字.我发现这个代码在互联网上但不起作用:

  import random
from math import ceil, log

def geometric(p):

# p should be in (0.0, 1.0].
if ((p <= 0.0) or (p >=1.0)):
raise ValueError("p must be in the interval (0.0, 1.0]")
elif p == 1.0:
# If p is exactly 1.0, then the only possible generated value is 1.
# Recognizing this case early means that we can avoid a log(0.0) later.
# The exact floating point comparison should be fine. log(eps) works just
# dandy.
return 1 …
Run Code Online (Sandbox Code Playgroud)

python indentation

-1
推荐指数
1
解决办法
2万
查看次数

IndentationError 在 `ast.parse` 和 `ast.walk` 的一个函数中,该函数是类中的一个方法

我想我知道IndentationError 中IndentationError描述的类似的常见原因:例如,unindent 不匹配任何外部缩进级别。这不适用于这里。

另外,我知道,textwrap.dedent但感觉这里不是正确的方法?


如果我有一个“正规”的功能,我可以做ast.parseast.walk这样的:

import ast
import inspect

def a():
    pass

code = inspect.getsource(a)
nodes = ast.walk(ast.parse(code))
for node in nodes:
    ...
Run Code Online (Sandbox Code Playgroud)

但是,如果函数是类中的方法,例如:

class B:
    def c(self):
        pass

code = inspect.getsource(B.c)
nodes = ast.walk(ast.parse(code))
Run Code Online (Sandbox Code Playgroud)

我得到:

IndentationError: unexpected indent
Run Code Online (Sandbox Code Playgroud)

我想这是有道理的,因为B.c 缩进了一级。那么我ast.parseast.walk这里怎么办呢?

python parsing indentation abstract-syntax-tree static-code-analysis

-1
推荐指数
1
解决办法
684
查看次数

在python中获取奇怪的缩进错误

我正在使用pythonanywhere运行我的python代码,我最近得到了奇怪的缩进错误.这是它的样子:

https://www.dropbox.com/s/ho26q4gpzd0qvpj/Screen%20Shot%202015-04-05%20at%2014.17.18.png?dl=0

该怎么办?

python indentation python-2.7 pythonanywhere

-2
推荐指数
1
解决办法
533
查看次数

缩进预期?

我是一个新的python和一个小文本冒险,它一直进展到现在我正在实施一个剑系统,如果你有一定尺寸的剑,你可以杀死一定大小的怪物.我试图代码中的另一个怪物的遭遇和我已经编写了剑的东西,但我想与完成它elseif...elif...elif说法,即使我有它的右缩进还在说缩进预计我不知道这里做的是代码:

print ('you find a monster about 3/4 your size do you attack? Y/N')
yesnotwo=input()
if yesnotwo == 'Y':
    if ssword == 'Y':
        print ('armed with a small sword you charge the monster, you impale it before it can attack it has 50 gold')
        gold += 50
        print ('you now have ' + str(gold) + ' gold')
    elif msword == 'Y':
        print ('armed with a medium sword you charge the monster, you impale the monster before …
Run Code Online (Sandbox Code Playgroud)

python indentation

-2
推荐指数
1
解决办法
2万
查看次数

缩进使软件控制流程更加明显。你怎么看待这件事?

您有多少次在代码深处遇到过带有return语句的函数?或者没有注意到循环中的中断继续?虽然我最近没有被return打得措手不及,但我仍然对continuebreak感到措手不及。

\n

本科毕业后不久,我向 Dennis Ritchie 建议更改 C\xe2\x80\x99s 的中断语句。虽然我不再希望做出改变,但 Dennis\xe2\x80\x99s 的回应包含了更广泛适用的智慧:

\n

您的建议是 \xe2\x80\x98break\xe2\x80\x99 语句应该用一个数字来表示要逃脱的级别数,这一建议之前已经出现过。这是我和 X3J11 委员会仔细考虑的一个想法,它在几个方面都很有吸引力。然而,语言标准化委员会决定拒绝它。这个想法的固有问题之一是它加剧了 \xe2\x80\x98break\xe2\x80\x99 已经存在的困难,即很难确定控制权的去向。源程序中非常小的变化会导致控制流发生巨大的变化,并且混乱程度随着中断级别的数量而增加。[强调我的]

\n

我相信问题不在于break和其他控制流语句。问题是我们如何缩进这些陈述。缩进不应位于控件所在的位置。相反,缩进应该达到控件所在的水平。所以,而不是

\n
func(....) {\n    \xe2\x80\xa6\n    for (...) {\n        \xe2\x80\xa6\n        if (...) {\n            break;\n        }\n       \xe2\x80\xa6\n    }\n    \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我建议我们缩进如下

\n
func(....) {\n    \xe2\x80\xa6\n    for (...) {\n        \xe2\x80\xa6\n        if (...) {\n    break;\n        }\n       \xe2\x80\xa6\n    }\n    \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

上面的代码看起来很难看,但这正是重点。

\n

通过像往常一样缩进,我们可能会掩盖意外的行为。通过按建议缩进,我们使意想不到的事情成为了预期。这将有助于更好地理解代码,并让所有人获得更好的睡眠。

\n

我不知道丹尼斯对此有何感想。可悲的是我从来没有由他来管理它。然而,如果你喜欢这个想法,作为对丹尼斯的致敬,我希望以他的名字命名它。K&R的缩进风格已经归功于他。称此为Ritchie 缩进会令人困惑。因此,我建议我们将其称为Ritchie …

c indentation break code-readability control-flow

-2
推荐指数
1
解决办法
99
查看次数

是否可以在1秒内自动在NetBeans中进行代码?

我有这个代码:

static int kontrolaParityZavorek2(final char[] text, int zacatek) {
while (zacatek < text.length && jeOteviraciZavorka(text[zacatek])) {
int konec = kontrolaParityZavorek2(text, zacatek + 1);
if (konec >= text.length ||!jsouParove(text[zacatek], text[konec])) 
{throw new RuntimeException("Chybi uzaviraci zavorka na pozici: " + konec);}
zacatek = konec + 1;
}
return zacatek; 
}
Run Code Online (Sandbox Code Playgroud)

我想转到NetBeans,粘贴此代码并在1秒内自动添加代码,以便它看起来像这样:

static int kontrolaParityZavorek2(final char[] text, int zacatek) {
  while (zacatek < text.length && jeOteviraciZavorka(text[zacatek])) {
    int konec = kontrolaParityZavorek2(text, zacatek + 1);
    if (konec >= text.length ||!jsouParove(text[zacatek], text[konec])) 
    {throw new RuntimeException("Chybi …
Run Code Online (Sandbox Code Playgroud)

java netbeans indentation auto-indent

-3
推荐指数
1
解决办法
1万
查看次数

为什么表达式可以在函数调用中跨越多行而不是赋值?

我刚刚意识到,当它作为参数传递给函数时,可以跨多行拉伸语句:

print(1 == 
  1)
Run Code Online (Sandbox Code Playgroud)

但是,在变量赋值期间执行相同的操作会引发SyntaxError:

x = 1 ==
  1
Run Code Online (Sandbox Code Playgroud)

为什么第一个例子有效但第二个例子产生了SyntaxError

python expression indentation parameter-passing variable-assignment

-3
推荐指数
1
解决办法
65
查看次数

运行脚本时出现Python错误 - "IndentationError:unindent与任何外部缩进都不匹配"

我尝试运行脚本时收到错误

Error:"IndentationError: unindent does not match any outer indentation"
Run Code Online (Sandbox Code Playgroud)

抛出错误的代码snipet:

def update():
    try:
        lines = open("vbvuln.txt", "r").readlines()
    except(IOError): 
         print "[-] Error: Check your phpvuln.txt path and permissions"
         print "[-] Update Failed\n" 
        sys.exit(1)
    try:
Run Code Online (Sandbox Code Playgroud)

这是出现错误的实际行:

print "[-] Update Failed\n" 
Run Code Online (Sandbox Code Playgroud)

python syntax indentation

-4
推荐指数
1
解决办法
3118
查看次数

1TBS 风格的类的左大括号应该放在哪里?

我读过维基百科上的缩进样式条目,但不是很清楚。

对于K&R 风格,它说:

每个函数的下一行都有其左大括号,其缩进级别与其标题相同

然而,函数内的多行块的左大括号与其各自的控制语句位于同一行

对于1TBS (OTBS) 样式,它说:

函数的左大括号位于同一行,并用空格分隔

它根本没有谈论类,但是Java 风格却谈论了类:

左大括号不仅对于函数内的块位于同一行,而且对于类或方法声明也位于同一行

如果我遵循 1TBS 风格,类定义的左大括号将放在哪里?

我也做了很多搜索(我更喜欢立即得到答案,而不是提出问题并等待很长时间),但没有结果。

coding-style indentation curly-braces

-13
推荐指数
1
解决办法
361
查看次数