Ошибка в моем коде для калькулятора доставки на Python

#python

#python

Вопрос:

Спасибо всем за помощь. У меня получилось. Извините, если я задал глупый вопрос. Кажется, в некоторых местах у меня было слишком много пробелов, а затем моя команда enter_more просто продолжала цикл, но я получил ее, еще раз спасибо.

 print("Shipping Calculator n")


enter_more="y"

while enter_more.lower()=="y":

   itemcost=float(input("Cost of items ordered:"))
   if itemcost < 0:
       print("You must enter a positive number. Please try again.")
       continue 

   if itemcost >75:

    Shipping_cost=0

   elif itemcost >50:

    Shipping_cost=9.95



   elif itemcost >30:

    Shipping_cost=7.95


   else: 

    Shipping_cost =5.95

   print("Shipping cost:",Shipping_cost)

   total_cost =round(Shipping_cost   itemcost,2)

   print ("Total cost:",round(Shipping_cost   itemcost,2))

   print()

   enter_more = input("Continuie? y/n:")

   if enter_more.lower()!= "y":

         break


print("Bye!")
  

Комментарии:

1. добавьте один пробел перед функцией печати в исходном файле

2. Ваш отступ неверен в elif amp; else … эти условия должны быть смещены так же, как исходное условие if.

3. Я не программист pyhon, но if, elsif и else должны иметь одинаковый отступ, это не так ни здесь, ни на картинке

Ответ №1:

Ваш код должен выглядеть следующим образом:

 print("Shipping Calculator n")
itemcost=float(input("Cost of items ordered:"))
if itemcost <30.00:
    Shipping_cost=5.95
elif itemcost >30.00 and itemcost <= 49.99:
    Shipping_cost=7.95
elif itemcost >50.00 and itemcost <=74.99:
    Shipping_cost=9.95
else: 
    print("Shipping cost is FREE") 

print("Shipping cost:"   str (itemcost)   Shipping_cost)
  

Причина, по которой вы получали ошибку, заключается в том, что elif оператор you был внутри if .


Также обратите внимание на другие моменты:

  • Также лучше заменить print() на n
  • format(Shipping_cost) может быть заменен на Shipping_cost
  • Если вы хотите использовать, format() тогда вам следует изменить print("Shipping cost:" str (itemcost) Shipping_cost) с print("Shipping cost:{}{}".format(str(itemcost),Shipping_cost))

Комментарии:

1. уберите один пробел перед print в else 🙂

Ответ №2:

Ваш оператор if должен иметь правильный отступ.

 print("Shipping Calculator")
print()
itemcost=float(input("Cost of items ordered:"))
if itemcost <30.00:
     Shipping_cost=5.95
 elif itemcost >30.00 and <=49.99:
     Shipping_cost=7.95
 elif itemcost >50.00 and <=74.99:
     Shipping_cost=9.95
 else: 
     print("Shipping cost is FREE") 

print("Shipping cost:"   str (itemcost)   format(Shipping_cost))
  

Это потому, что в дереве кода python (если хотите, но я имею в виду циклы и операторы if) нет фигурных скобок, как в большинстве языков программирования. Вместо этого он смотрит, как в коде есть отступ. При том, как вы это написали, компилятор интерпретирует elif инструкции и else оператор как отдельный оператор if, и это приводит к путанице, потому что нет if инструкции. Вот почему вам нужно сделать правильный отступ.

Я предполагаю, что это способ Python заставить программистов правильно делать отступы.