Member 12971412 Ответов: 4

Ошибка отступа с if, elif и else в Python


Привет кодирующему сообществу!
Мне 9 лет, и я люблю программировать на Python, и это моя первая публикация-так что пожелайте мне удачи!
Я только что написал простой калькулятор - на Python - и в основном борюсь с концентрацией на написании фактического кода (обычно я целую вечность печатаю длинные строки, указывая пользователю, что делать - я должен сделать это в конце!). Я также пытаюсь сделать это с как можно меньшей помощью, чтобы увидеть, могу ли я самостоятельно (на своем собственном) коде. Но в любом случае я продолжаю получать эту ошибку отступа:

Traceback (most recent call last):
File "python", line 9
z = input("Please input your next number:")
TabError: inconsistent use of tabs and spaces in indentation

Пожалуйста, помогите быстро, иначе я не смогу проверить свою программу, чтобы увидеть, работает ли она!
Я был бы благодарен за любую помощь, которую смогу получить.
Это весь мой код:

#A simple calculator - I am doing this entirely without help and nonsanse such as printing, so here goes!
def calculator(x, y, z):
	operation = input("a = Add, s = Subtract, m = Multiply, d = Divide")
	if operation == "a":
		x = input("First number:")
		y = input("Second number:")
		other = input("Any other numbers?")
	elif other == "y":
    	z = input("Please input your next number:")
    	return x + y +  z
	else:
	    return x + y
	    
	if operation == "s":
		x = input("First number:")
		y = input("Second number:")
		return x - y
	if operation == "m":
		x = input("First number:")
		y = input("Second number:")
		return x * y
	if operation == "d":
		x = input("First number:")
		y = input("Second number:")
		return x / y
		
print (calculator)

calculator(x, y)


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

Я попробовал поставить
elif
инструкция внутри
if
, и то же самое с
else
заявление.

4 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я продолжаю получать эту ошибку отступа:

Обратная трассировка (самый недавний призыв последнего):
Файл "python", строка 9
z = input ("пожалуйста, введите свой следующий номер:")
TabError: непоследовательное использование табуляций и пробелов в отступах

Сообщение довольно явное, оно говорит вам, что строка 9 начинается со смеси табуляций и пробелов. PHP может иметь дело только с 1 видом из них в данный момент времени.
Посмотрите на свой код, вторая строка должна начинаться с 2 вкладок:
<tab>elif other == "y":
<space><space><space><space><tab>z = input("Please input your next number:")


Профессиональные текстовые редакторы могут сделать видимыми эти символы.
В противном случае поместите курсор влево и используйте стрелку вправо, если курсор перемещается на 1 позицию, это пробел, если курсор перемещается на следующий столбец, кратный 4, это табуляция.


Рейтинг:
1

Peter Leow

Блок elif и else предназначен для проверки входных данных на наличие "другого", поэтому он должен быть блоком if else и иметь отступ, как и переменная" other".
Вы могли бы использовать elif для других значений "операции", поскольку они принадлежат к одной и той же цепочке потока.
И последнее: в вашем случае нецелесообразно использовать функцию, поэтому замените все операторы return на print на do.


Рейтинг:
1

Kevin Ng

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

Во-вторых, если вам нужен строковый ввод, вы вызываете функцию raw_input. Если вам нужно целое число,вы вызываете функцию ввода. Это рабочий код этого калькулятора, и я написал его как можно проще для чтения. Получайте удовольствие и удачи, Если вам нужна помощь в программировании, ищите мои статьи. Я пишу для людей, которые только учатся у самого опытного. Мне потребовалась неделя, чтобы пройти через один предмет, но если вы прочтете мою статью, то сможете узнать, какой язык программирования вам подходит.

Вот рабочая программа. С одним циклом встроенной проверки ошибок, чтобы показать вам, как это делается.

def calculator():
 
    operation = raw_input("a = Add, s = Subtract, m = Multiply, d = Divide:")
    while (operation is not "a" and operation is not "s" and operation is not "m" and operation is not "d" and operation is not "q"):
        print("Incorrect input, please try again. Type q to quit" )
        operation = raw_input("a = Add, s = Subtract, m = Multiply, d = Divide:")
        if operation is "q":
            return;

    
    if operation is "a":
        x = input("First number:")
        y = input("Second number:")
        other = raw_input("Any other numbers?")  
        if other == "y":
            z = input("Please input your next number:")
            return x + y + z
        else:
            return x + y
 
    if operation is "s":
        x = input("First number:")
        y = input("Second number:")
        return x - y
    if operation == "m":
        x = input("First number:")
        y = input("Second number:")
        return x * y
    if operation is "d":
        x = input("First number:")
        y = input("Second number:")
        return x / y
 
 
a = calculator()
print(a)


Рейтинг:
0

Richard MacCutchan

Попробовать это

def calculator(x, y, z):
    operation = input("a = Add, s = Subtract, m = Multiply, d = Divide")
    if operation == "a":
        x = input("First number:")
        y = input("Second number:")
        other = input("Any other numbers?")
        if other == "y":     # this is a new if block
            z = input("Please input your next number:")
            return x + y +  z
        else:
            return x + y
        
    elif operation == "s":     # this continues the "if operation ..." above
        x = input("First number:")
        y = input("Second number:")
        return x - y
    elif operation == "m":     # so does this
        x = input("First number:")
        y = input("Second number:")
        return x * y
    elif operation == "d":     # so does this
        x = input("First number:")
        y = input("Second number:")
        return x / y
    
    print (calculator)

calculator(x, y)

Вы также заявили calculator как взять три параметра (x,y,z), но затем вы просите пользователя ввести их. Кроме того ваш звонок в нижней части кода только отправляет x и y.

Тем не менее, я должен сказать, что для 9-летнего ребенка это довольно хороший код, продолжайте в том же духе.


Member 12971412

Эй, спасибо. Это просто сделало мой день намного лучше!