Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 不支持的操作数类型python3_Python 3.x - Fatal编程技术网

Python 3.x 不支持的操作数类型python3

Python 3.x 不支持的操作数类型python3,python-3.x,Python 3.x,所以我一直收到上面的错误信息,我不明白为什么。这就是我到目前为止所做的: #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 pr

所以我一直收到上面的错误信息,我不明白为什么。这就是我到目前为止所做的:

#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)
#请求用户输入属性值
def getPropertyValue():
值=0
value=float(输入('请输入所需属性的值:'))
#排除否定答案
如果值<0:
打印('无效的属性值,请重新输入正值')
getPropertyValue()
#返回有效答案
其他:
返回值
#计算评估值
def calc_评估值(值):
a_值=值*0.60
返回一个值
#计算财产税,每100美元72美分
def calc_财产税(a_值):
p_税=a_值/100*0.72
p_税=四舍五入(p_税,2)
退税
#用有意义的文本显示结果
def打印信息(值、a值、p税):
打印('属性值:$',值)
打印('评估的属性值:$',a_值)
打印('物业税:$',物业税)
#按顺序运行函数
value=getPropertyValue()
a_值=计算值(值)
p_税=计算财产税(a_值)
打印信息(值、a值、p税)

当我用一个正数运行它时,它工作了。如果我连续运行负数,它会按预期切断它,并循环它们,直到它们输入一个非负数。但是,如果在此之后输入正数,则会显示错误消息。我已经做了一段时间了,这对我来说没有意义。我认为输入负数可能会影响它试图使用的数字类型,所以我在输入之前尝试将总数归零(这就是为什么有一个值=0),但它仍然不允许它通过。

如果要执行
getPropertyValue
递归,应该返回函数,而不是只执行它。 在此处添加返回语句:

    #eliminate negative answers
    if value < 0:
        print('Invalid property value, please re-enter a positive value. ')
        return getPropertyValue()
#排除否定答案
如果值<0:
打印('无效的属性值,请重新输入正值')
返回getPropertyValue()

在您的
getPropertyValue
函数中,当用户输入负数时,您再次递归调用
getPropertyValue()
,但您没有返回其返回值,因此默认情况下它返回
None
,使
计算评估值
稍后使用
值进行计算

简单更改:

getPropertyValue()
致:


提供完整的错误堆栈我明白你的意思,感谢你的帮助,但我很好奇:我是否应该在输入之前将值重新归零,将“无”更改为零?不确定为什么要将
值归零。当用户输入负数时,调用
getPropertyValue()
并返回其值,
getPropertyValue()
依次要求用户输入并返回新的
值(如果有效)。这就是全部。
return getPropertyValue()