Member 14517556 Ответов: 2

Unindent не соответствует никакому внешнему уровню отступа. Что это значит


def factorial(n):
	if n == 1:
		return 1
	else:
		return n*factorial(n-1)


sum1 = []
sum =0
t = int(input("number of test cases:"))
count = 0
lism =[]
for i in range(t):
	print("test case:",i)
	r = int(input("enter the number of elements:"))# here 
    while r > 0:
        i = input("enter the elements of the list:")
        lis += [i]# here
        r -= 1
        lism.append(lis)
    lis = []

for n in lism:
	e = 0
	m = len(n)
print(m)


Что это значит и как это можно исправить,потому что я пробовал это, но это не исправляет. я тоже искал в google, но не нашел полезного решения.Пожалуйста, помогите исправить мой код, а также расскажите об ошибке, которую он показывает.

Что я уже пробовал:

Файл "C:/Users/cheta/PycharmProjects/myproject/venv/practice.py", строка 16
в то время как r>0:
^
IndentationError: unindent не соответствует никакому внешнему уровню отступа

Это полный вывод

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Unindent не соответствует никакому внешнему уровню отступа. Что это значит

Это означает, что вы не можете иметь строку с отступом табуляции и следующую с пробелами. табуляции и пробелы не взаимозаменяемы.
for i in range(t):
	print("test case:",i)                           # here is indented with tab
	r = int(input("enter the number of elements:")) # here is indented with tab
    while r > 0:                                    # here is indented with spaces

Вам нужно сделать свой ум, вы отступаете либо с помощью табуляций, либо с пробелами, но вы не смешиваете.


Рейтинг:
12

OriginalGriff

Python использует отступы для определения блоков кода, Вы можете отступить код на любую величину, но он должен точно соответствовать, чтобы быть на одном уровне.
так что все в порядке:

if a==b :
   if c==d :
      x()
   y()
z()
Но это:
if a==b :
   if c==d :
      x()
 y()
z()
Даст вам ошибку отступа, потому что вызов y не "выстроен" ни с тем, ни с другим if поэтому система не знает, что с ней делать.

Теперь ваш код выглядит нормально, но ... скорее всего, проблема будет заключаться в табуляциях и пробелах. Редакторы, использующие отступы табуляции, отступают в одну и ту же позицию, но если вы также смешиваете пробелы, то компилятор не знает, сколько пробелов должна представлять вкладка.

Проверьте свой редактор: некоторые позволяют "показывать метки" для обозначения вкладок, отличных от пробелов, некоторые позволяют заменять вкладки пробелами (я бы на вашем месте включил этот параметр).

Это лишь одна из причин, по которой я не использую Python: он не предназначен для создания хорошего, надежного, ремонтопригодного кода!


Member 14517556

Вы имеете в виду, что я должен либо использовать табуляции, либо пробел в коде, а не то и другое, потому что это сбивает компилятор с толку?

OriginalGriff

Это зависит от используемого вами редактора и его настроек, но в основном да. :смеяться:

Member 14517556

Я изучил функции python till и довольно хорошо пишу на нем коды. Можете ли вы порекомендовать, какой язык я должен начать дальше, так как я также не очень доволен python. У меня есть два варианта : C++ и Java

OriginalGriff

Я бы предложил C# - он мощный и может быть использован для программирования настольных, веб-и мобильных приложений (включая Android и iPhone с Xamarin), чего Java не может и не имеет сложности C++ (что часто позволяет вам делать слишком много ошибок). Есть даже проект в кулисах, чтобы использовать его непосредственно в браузере вместо Javascript, что будет большим плюсом!
Java в значительной степени ограничена только устройствами Android (хотя вы можете запустить ее в Windows, вы не видите, что она используется так много на практике, отчасти из-за необходимости установки среды выполнения java)