我是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) 我想我知道IndentationError 中IndentationError描述的类似的常见原因:例如,unindent 不匹配任何外部缩进级别。这不适用于这里。
另外,我知道,textwrap.dedent但感觉这里不是正确的方法?
如果我有一个“正规”的功能,我可以做ast.parse和ast.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)
我得到:
Run Code Online (Sandbox Code Playgroud)IndentationError: unexpected indent
我想这是有道理的,因为B.c 它缩进了一级。那么我ast.parse和ast.walk这里怎么办呢?
python parsing indentation abstract-syntax-tree static-code-analysis
我正在使用pythonanywhere运行我的python代码,我最近得到了奇怪的缩进错误.这是它的样子:
https://www.dropbox.com/s/ho26q4gpzd0qvpj/Screen%20Shot%202015-04-05%20at%2014.17.18.png?dl=0
该怎么办?
我是一个新的python和一个小文本冒险,它一直进展到现在我正在实施一个剑系统,如果你有一定尺寸的剑,你可以杀死一定大小的怪物.我试图代码中的另一个怪物的遭遇和我已经编写了剑的东西,但我想与完成它else的if...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) 您有多少次在代码深处遇到过带有return语句的函数?或者没有注意到循环中的中断或继续?虽然我最近没有被return打得措手不及,但我仍然对continue和break感到措手不及。
\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和其他控制流语句。问题是我们如何缩进这些陈述。缩进不应位于控件所在的位置。相反,缩进应该达到控件所在的水平。所以,而不是
\nfunc(....) {\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}\nRun Code Online (Sandbox Code Playgroud)\n我建议我们缩进如下
\nfunc(....) {\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}\nRun Code Online (Sandbox Code Playgroud)\n上面的代码看起来很难看,但这正是重点。
\n通过像往常一样缩进,我们可能会掩盖意外的行为。通过按建议缩进,我们使意想不到的事情成为了预期。这将有助于更好地理解代码,并让所有人获得更好的睡眠。
\n我不知道丹尼斯对此有何感想。可悲的是我从来没有由他来管理它。然而,如果你喜欢这个想法,作为对丹尼斯的致敬,我希望以他的名字命名它。K&R的缩进风格已经归功于他。称此为Ritchie 缩进会令人困惑。因此,我建议我们将其称为Ritchie …
我有这个代码:
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) 我刚刚意识到,当它作为参数传递给函数时,可以跨多行拉伸语句:
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
我尝试运行脚本时收到错误
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) 我读过维基百科上的缩进样式条目,但不是很清楚。
对于K&R 风格,它说:
每个函数的下一行都有其左大括号,其缩进级别与其标题相同
然而,函数内的多行块的左大括号与其各自的控制语句位于同一行
对于1TBS (OTBS) 样式,它说:
函数的左大括号位于同一行,并用空格分隔
它根本没有谈论类,但是Java 风格却谈论了类:
左大括号不仅对于函数内的块位于同一行,而且对于类或方法声明也位于同一行
如果我遵循 1TBS 风格,类定义的左大括号将放在哪里?
我也做了很多搜索(我更喜欢立即得到答案,而不是提出问题并等待很长时间),但没有结果。
indentation ×9
python ×6
auto-indent ×1
break ×1
c ×1
coding-style ×1
control-flow ×1
curly-braces ×1
expression ×1
java ×1
netbeans ×1
parsing ×1
python-2.7 ×1
syntax ×1