如何在Python中从一个变量中减去另一个变量

0 投票
4 回答
30166 浏览
提问于 2025-04-18 10:40
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'是一个字符串,而不是像数字那样处理;)

撰写回答