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()