TypeError неподдерживаемый тип операнда для %:Плавающий и NoneType

StackOverflow https://stackoverflow.com//questions/22022534

  •  21-12-2019
  •  | 
  •  

Вопрос

извините, что беспокою вас нубским вопросом, но я новичок в Python.По сути, это домашнее задание, и я не могу понять, что делаю не так.Я думаю, что у меня есть все, что мне нужно, но я продолжаю получать ошибку типа.Любая помощь приветствуется.Спасибо!

def Main():
    Weight = float(input ("How much does your package weigh? :"))
    CalcShipping(Weight)

def CalcShipping(Weight):

    if Weight>=2:
        PricePerPound=1.10

    elif Weight>=2 & Weight<6:
        PricePerPound=2.20

    elif Weight>=6 & Weight<10:
        PricePerPound=float(3.70)

    else:
        PricePerPound=3.8

    print ("The total shipping cost will be $%.2f") % (PricePerPound) 


Main()
Это было полезно?

Решение

А print() функция возвращает None;вы, вероятно, хотели переместить % операция в вызов функции:

print ("The total shipping cost will be $%.2f" % PricePerPound) 

Обратите внимание, что ваш if тесты используют побитовый и оператор &;вы, вероятно, хотели использовать and вместо этого, используя логическую логику:

elif Weight >= 2 and  Weight < 6:
    PricePerPound = 2.20

elif Weight >= 6 and Weight < 10:
    PricePerPound = 3.70

или, используя цепочку сравнения:

elif 2 <= Weight < 6:
    PricePerPound = 2.20

elif 6 <= Weight < 10:
    PricePerPound = 3.70

Просматривая свои тесты, вы проверяете Weight >= 2 слишком рано;если Weight между 2 и 6, вы соответствуете первому if и вообще игнорировать остальные утверждения.Я думаю, вы хотели:

PricePerPound = 1.10

if 2 <= Weight < 6:
    PricePerPound = 2.20

elif 6 <= Weight < 10:
    PricePerPound = 3.70

elif Weight >= 10:
    PricePerPound = 3.8

напримерцена 1,10, если только у вас нет посылки весом 2 и более, после чего цена постепенно увеличивается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top