Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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 返回值错误_Python - Fatal编程技术网

Python 返回值错误

Python 返回值错误,python,Python,我正在编写计算工资余额的代码。我使用了一个名为balance的函数。但我在返回值时出错 print("WELCOME TO SALARY-BALANCE CALCULATOR") def balance(salary,expense,bills): b=salary-expense-bills return b print("Enter your salary :") sal=input() exp=input("Enter your personal expense ")

我正在编写计算工资余额的代码。我使用了一个名为balance的函数。但我在返回值时出错

print("WELCOME TO SALARY-BALANCE CALCULATOR")

def balance(salary,expense,bills):
    b=salary-expense-bills
    return b

print("Enter your salary :")
sal=input()

exp=input("Enter your personal expense ")
bil=input("Enter the bills amount")

bal=balance(sal,exp,bil)
print("The balance amount is : %d"%bal)
运行上述代码后,我发现以下错误

line 13, in <module>
  bal=balance(sal,exp,bil)
line 5, in balance
  b=salary-expense-bills
TypeError: unsupported operand type(s) for -: 'str' and 'str'
第13行,在
余额=余额(sal、exp、bil)
第5行,平衡
b=工资费用账单
TypeError:-:“str”和“str”的操作数类型不受支持

有人能告诉我哪里出错了吗?

问题是输入返回一个字符串,因此需要将字符串转换为如下所示的浮点值(如果输入的是字符串而不是数字,可能会添加一些输入验证抛出错误)

最佳做法是编写一个函数来执行以下解析:

def parse_input_number( string ):
    try:
        return float(string)
    except Exception as error:
        print('the input is not a valid number')

问题是输入返回一个字符串,因此需要将字符串转换为如下所示的浮点值(如果输入的是字符串而不是数字,则可能会添加一些输入验证抛出错误)

最佳做法是编写一个函数来执行以下解析:

def parse_input_number( string ):
    try:
        return float(string)
    except Exception as error:
        print('the input is not a valid number')
使用以下命令:

print("WELCOME TO SALARY-BALANCE CALCULATOR")

def balance(salary,expense,bills):
    b=salary-expense-bills
    return b

print("Enter your salary :")
sal=int(input())

exp=int(input("Enter your personal expense "))
bil=int(input("Enter the bills amount"))

bal=balance(sal,exp,bil)
print("The balance amount is : %d"%bal)
使用以下命令:

print("WELCOME TO SALARY-BALANCE CALCULATOR")

def balance(salary,expense,bills):
    b=salary-expense-bills
    return b

print("Enter your salary :")
sal=int(input())

exp=int(input("Enter your personal expense "))
bil=int(input("Enter the bills amount"))

bal=balance(sal,exp,bil)
print("The balance amount is : %d"%bal)


您可能正在使用Python3,其中
input
返回一个字符串。请尝试
int(input(“…”)
您能告诉我们您尝试在哪个python版本上运行脚本吗?对不起,我忘了提到这个版本。我正在使用Python3.6.1更改您正在使用Python3,其中
input
返回一个字符串。try
int(input(“…”)
您能告诉我们您尝试在哪个python版本上运行脚本吗?对不起,我忘了提到这个版本。我使用的是python 3.6.1解答应该包括对问题和解决方案的解释,而不仅仅是代码谢谢您的帮助。成功了。事实上,我在数据类型中犯了错误。答案应该包括对问题和解决方案的解释,而不仅仅是代码。谢谢您的帮助。成功了。实际上,我在datatypes.OP中犯了这个错误,如果没有格式字符串打印可能会更好:
print(“余额是:”,bal)
最好的做法是编写一个函数来进行解析,如果没有示例说明如何使用它,对于初学者来说很难辨别,我也不同意这是“最佳做法”在python中。您最终将不返回任何值,这将在以后给您带来奇怪的错误。此外,如果它是Python2,那么这样做是错误的,应该是
raw\u input
。@Elazar如果它是Python2,那么两个
input()
行将计算为
float
s,并且原始错误不会发生。我认为加一条蟒蛇是安全的tag@RyanHaining当然可以,但这里有一个“演示”python2的示例。不使用格式字符串打印可能会更好:
print(“余额是:”,bal)
最佳做法是编写一个函数来进行解析,没有示例说明如何使用它,对于初学者来说很难辨别,我也不同意这是python中的“最佳做法”。您最终将不返回任何值,这将在以后给您带来奇怪的错误。此外,如果它是Python2,那么这样做是错误的,应该是
raw\u input
。@Elazar如果它是Python2,那么两个
input()
行将计算为
float
s,并且原始错误不会发生。我认为加一条蟒蛇是安全的tag@RyanHaining当然可以,但这里有一个“演示”python2的示例。不应该。