簡體   English   中英

不受支持的操作數類型python3

[英]Unsupported operand types python3

因此,我不斷收到上述錯誤消息,但我不明白為什么。 這是我到目前為止的內容:

#request user input for property value
def getPropertyValue():
  value = 0

  value = float(input('Please enter value of desired property: '))
  #eliminate negative answers
  if value < 0:
    print('Invalid property value, please re-enter a positive value. ')
    getPropertyValue()

  #return valid answers
  else: 
    return value
#calculate assessed value 
def calc_assessed_value(value):
  a_value = value * 0.60
  return a_value
#calculate property tax, 72 cents of each 100 dollars
def calc_property_tax(a_value):
  p_tax = a_value / 100 * 0.72
  p_tax = round(p_tax, 2) 
  return p_tax
#display results with meaningful text
def print_message(value, a_value , p_tax):
  print('Property Value: $' , value)
  print('Assessed Property Value: $' , a_value)
  print('Property Tax: $' , p_tax)
#run functions in order
value = getPropertyValue()

a_value = calc_assessed_value(value)

p_tax = calc_property_tax(a_value)

print_message(value , a_value , p_tax)

當我以正數運行它時,它會工作。 如果我連續運行負數,它會按預期切斷它,並循環播放直到它們輸入非負數。 但是,如果在此之后輸入正數,則會顯示錯誤消息。 我已經有一段時間了,這對我來說沒有意義。 我以為輸入一個負數可能會影響它要使用的數字類型,因此我嘗試在輸入之前將總數歸零(這就是為什么值= 0)的原因,但仍然不允許它通過。

如果要遞歸執行getPropertyValue ,則應返回函數而不是僅執行它。 在此處添加返回聲明:

    #eliminate negative answers
    if value < 0:
        print('Invalid property value, please re-enter a positive value. ')
        return getPropertyValue()

在您的getPropertyValue函數中,當用戶輸入一個負數時,您再次遞歸調用getPropertyValue() ,但是您沒有返回其返回值,因此默認情況下它返回None ,從而導致calc_assessed_value稍后使用None值進行計算。

只需更改:

getPropertyValue()

至:

return getPropertyValue()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM