如何在Python中从一个变量中减去另一个变量
import easygui as eg
import sys
version = 'Percentage Calculator'
Options = [ 'Percantage Increase', 'Percentage Decrease' ]
button = eg.buttonbox ('What would you like to calculate', title = version, choices = Options)
if button == Options [0]:
enter = eg.enterbox ('Please enter a number between 0 and 999.', title = version, strip=False)
if enter < '0' or enter > '999':
eg.msgbox ('please choose a number between 0 and 999.', title = version, ok_button='OK')
sys.exit()
enter2 = eg.enterbox ('please enter a number between 0 and 999, that is bigger than the first number.', title = version, strip=False)
if enter2 < '0' or enter2 > '999':
eg.msgbox ('please choose a number between 0 and 999.', title = version, ok_button='OK')
sys.exit()
elif enter2 < var enter:
eg.msgbox ('please choose a number bigger than the first number.', title = version, ok_button='OK')
sys.exit()
Subtract = enter2 - enter
print (Subtract)
这是我的代码……你可以看到,底部有一句话写着'enter2 - enter',我想让这个计算把用户输入的第二个数字减去第一个数字,但它只是显示……
Traceback (most recent call last):
File "C:\Users\olitr_000\Desktop\PYTHON\Percentage Calculator\Percentage Calculator.py", line 22, in <module>
Subtract = enter2 - enter
TypeError: unsupported operand type(s) for -: 'str' and 'str'
我该怎么做才能让比如说输入1等于55,输入2等于198,这样我就能得到198 - 55的结果呢?!
请帮帮我,如果你需要更多信息,请告诉我。
4 个回答
0
我觉得你遇到的问题只是一个解析
的问题。我们知道,Python 不像其他一些编程语言那样,可以直接从键盘接收除了字符串
以外的其他类型的值,因为在 Python 的代码中没有变量类型的定义。这就是为什么我们总是需要将输入转换或解析成合适的类型。
>>> a = "3.14"
>>> float(a)
3.14
>>> int(float(a))
3
0
这会对你有帮助。
import easygui as eg
import sys
version = 'Percentage Calculator'
Options = [ 'Percantage Increase', 'Percentage Decrease' ]
button = eg.buttonbox ('What would you like to calculate', title = version, choices = Options)
if button == Options [0]:
enter = eg.enterbox ('Please enter a number between 0 and 999.', title = version, strip=False)
if enter < '0' or enter > '999':
eg.msgbox ('please choose a number between 0 and 999.', title = version, ok_button='OK')
sys.exit()
enter2 = eg.enterbox ('please enter a number between 0 and 999, that is bigger than the first number.', title = version, strip=False)
if enter2 < '0' or enter2 > '999':
eg.msgbox ('please choose a number between 0 and 999.', title = version, ok_button='OK')
sys.exit()
elif enter2 < var enter:
eg.msgbox ('please choose a number bigger than the first number.', title = version, ok_button='OK')
sys.exit()
Subtract = int(enter2) - int(enter)
print (Subtract)
2
你不能直接把两个字符串相减,首先要把它们转换成整数。
Subtract = int(enter2) - int(enter)
1
你的问题是,当你使用eg.enterbox函数时,用户输入的数字会被当作字符串来看待。要解决这个问题,我们需要把enterbox返回的字符串传给int()函数。这样就能把数字的字符串转换成真正的整数,这样就可以用来和其他整数进行减法运算了。
比如:
enter = "3"
enter = int(enter)
enter2 = "4" #This is an example of what the variable looks like coming from the enterbox
enter2 = int(enter2) #enter2 now looks like 4 instead of "4"
output = enter2 - enter #this will return 1 to the variable output
希望这对你有帮助;)
哦,还有,在这一行中你不需要引号:
if enter < '0' or enter > '999':
因为你是在说'0'是一个字符串,而不是像数字那样处理;)