tmi*_*hty 11 python vb.net migration vb6
我有以下代码:
for i in range(0,numClass):
if breaks[i] == 0:
classStart = 0
else:
classStart = dataList.index(breaks[i])
classStart += 1
classEnd = dataList.index(breaks[i+1])
classList = dataList[classStart:classEnd+1]
classMean = sum(classList)/len(classList)
print classMean
preSDCM = 0.0
for j in range(0,len(classList)):
sqDev2 = (classList[j] - classMean)**2
preSDCM += sqDev2
SDCM += preSDCM
return (SDAM - SDCM)/SDAM
Run Code Online (Sandbox Code Playgroud)
我想将此代码转换为VB.NET.
但我不确定if-elseif语句的结束位置.它是在"classStart + = 1"之后结束的吗?
我觉得有点难以看到for-next-loops在Python中的结束位置.
该代码来自http://danieljlewis.org/files/2010/06/Jenks.pdf
谢谢.
在Python中,缩进块结束,这正是块结束的位置.因此,例如,考虑一些简单的代码:
myName = 'Jhon'
if myName == 'Jhon':
print(myName * 5)
else:
print('Hello')
Run Code Online (Sandbox Code Playgroud)
现在,当您运行此代码时(确保从单独的模块运行它,而不是从交互式提示符运行),它将打印'Jhon'五次(请注意,Python将完全按照指定处理对象,它赢了'甚至懒得尝试将变量myName
的值转换为乘法的数字)就是这样.这是因为if块内部的代码块仅被执行.请注意,如果将else
关键字放在if语句下面的任何位置,或者如果混合使用制表符和空格,则Python会引发错误.
现在,在你的代码中,
for i in range(0,numClass):
if breaks[i] == 0:
classStart = 0
else:
classStart = dataList.index(breaks[i])
classStart += 1
Run Code Online (Sandbox Code Playgroud)
看看for
代码块的缩进是从哪里开始的?一个选项卡,因此,在for
语句后缩进一个选项卡的所有内容都将在for块内.现在,显然,if
语句在语句内部for
,所以它在for
语句中.现在,让我们转到下一行,classStart = 0
- 这是从for
语句中缩进两个选项卡,从语句中缩进一个选项卡if
; 所以它的内部if
声明和内部块.在下一行,您有一个else
关键字只从for
语句中缩进一个选项卡而不是两个选项卡,因此它位于for
语句内部,而不是if
语句内部.
如果您之前使用其他语言编码,请考虑使用这些花括号:
for i in range(0,numClass)
{
if breaks[i] == 0
{
classStart = 0
}
else
{
classStart = dataList.index(breaks[i])
classStart += 1
}
}
Run Code Online (Sandbox Code Playgroud)
简单的区别在于,您不需要为表达式添加括号,除非您想强制运算符优先级规则而您不需要那些花括号,而只需将它们平均缩进.
归档时间: |
|
查看次数: |
58314 次 |
最近记录: |