崇高的文本,缩进和python代码成为香蕉

时间:2018-07-10 09:35:15

标签: python pandas sublimetext3 indentation

我有一个很奇怪的问题。我正在研究一些Python 2.7脚本,并在Sublime 3中对其进行编辑。

现在,该脚本运行了,但似乎表现得“不合逻辑”,这意味着它没有遵循我的逻辑。例如,有时它不会进入if / else语句。

编辑:

一段时间后,我能够轻松进行复制。查看下面的屏幕截图,并注意第11行的缩进螺丝。当然,请不要介意代码的逻辑(没有逻辑),这只是为了说明我的观点。

enter image description here

如果我从终端运行,则得到输出

new key
new key
new key
new key
new key
Value already exists

,您会看到打印语句比预期的要少。例如,如果我修复缩进使其与所有选项卡保持一致,则会得到期望的输出:

new key
new key
Value already exists
Value already exists
new key
new key
Value already exists
Value already exists
new key
{1: [1], 2: [2], 3: [3], 4: [4], 9: [9]}

基本上,问题是。这是某种错误吗?为什么代码会产生“不合逻辑”的输出,而不是抛出某种缩进错误?

原始帖子:

我举一个例子。假设我有一个类似pandas数据框df的东西,在某个时候我在行上循环。

d = {}    
for index, row in df.iterrows():
    base = row['base']
    s1 = row['string_1']
    s2 = row['string_2']

    if base not in d:
        d[base] = [sorted([s1,s2])]
        # do something
    else:
        if sorted([s1,s2]) not in d[base]:
            d[base].append(sorted([s1,s2]))
            # do something
        else:
           pass

现在,基本上看来,当我有时运行脚本(不知道基于什么)时,它似乎完全跳过了if / else语句。同样,脚本正在运行,但是不遵守代码中编写的逻辑。我无数次手动检查,无法理解。

过了一会儿,我记得一段时间前发生了类似的事情,我只是单击Sublime的右下角以“将缩进转换为制表符”。这似乎解决了问题。 (有时我可能已经从其他编辑器复制并粘贴了一行)。

困扰我的是我真的不知道发生了什么。如果有一些缩进问题,我会期望出现错误,而不是代码在没有明显逻辑的情况下运行。调试真的很痛苦。

其他人也经历过同样的经历,并且知道这是由于什么造成的吗?

0 个答案:

没有答案