Используйте Vim Retab для устранения ошибки TabError: непоследовательное использование табуляции и пробелов в отступах?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Используйте Vim Retab для устранения ошибки TabError: непоследовательное использование табуляции и пробелов в отступах?

Сообщение Anonymous »

Извините за вопрос новичка, но я прочитал руководство, этот вопрос и несколько раз пробовал, но без ожидаемых результатов.

Итак, я использовал vim для редактирования файла (прикреплен). Но при запуске я получил ошибку TabError: непоследовательное использование табуляции и пробелов в ошибке отступа.

Вот что я пробовал:
  • Откройте файл с помощью Vim. введите :retab и :x. Запустите файл еще раз. По-прежнему появляется сообщение TabError.
  • Откройте файл еще раз и введите :retab! и :x. Запустите файл еще раз. По-прежнему появляется сообщение TabError.
  • Откройте файл еще раз и введите :retab! 4 и :x. Запустите файл еще раз. На этот раз это работает, но я понятия не имею, почему? Плюс в файлах отступы кажутся чрезмерно длинными. (Я читал здесь, что редактор может отображать 8 пробелов для табуляции)
Мои вопросы:< /p>
  • Что означает :retab, :retab! и :retab! 4 что это значит?
  • Почему :retab не работает с моим файлом?

    Код: Выделить всё

    #!/usr/bin/env python
    #Reduce function for computing matrix multiply A*B
    #Input arguments:
    #variable n should be set to the inner dimension of the matrix product (i.e., the number of columns of A/rows of B)
    import sys
    import string
    import numpy
    
    #number of columns of A/rows of B
    n = int(sys.argv[1])
    
    #Create data structures to hold the current row/column values (if needed; your code goes here)
    
    currentkey = None
    alist = [] # list for elelents in  A
    blist = [] # list for elements in B
    # input comes from STDIN (stream data that goes to the program)
    for line in sys.stdin:
    #Remove leading and trailing whitespace
    line = line.strip()
    #Get key/value
    key, value = line.split('\t',1)
    print(key, value)
    #Parse key/value input (your code goes here)
    key = (key.split(',', 1)[0], key.split(',',1)[1])
    value = (value.split(',', 1)[0], value.split(',',1)[1], value.split(',',1)[2])
    #If we are still on the same key...
    if key==currentkey:
    #Process key/value pair (your code goes here)
    # store all values in a lisl
    if value[0]=='A':
    alist.append([value[1], value[2]])
    else:
    blist.append([value[1], value[2]])
    #Otherwise, if this is a new key...
    else:
    #If this is a new key and not the first key we've seen, i.e. currentkey!=None
    if currentkey:
    #compute/output result to STDOUT (your code goes here)
    alist = sorted(alist)
    blist = sorted(blist)
    newlist = [a[1]*b[1] for a,b in zip(alist, blist)]
    res = newlist.sum()
    print(currentkey, res)
    currentkey = key
    #Process input for new key (your code goes here)
    


Подробнее здесь: https://stackoverflow.com/questions/487 ... n-indentat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»