2014-06-22 70 views
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 = enter2 - enter 
    print (Subtract) 

這是我的代碼......正如你可以看到的,在底部附近,它說'enter2 - enter'我希望這個減去用戶的第二個數字把從第一號,但它只是說...如何從python中的另一個變量中減去一個變量

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和ENTER2 = 198我怎麼會得到它,這樣它198 - 55?

請幫助,我需要任何更多的信息,請通知我。

+0

您需要將輸入轉換爲'int',因爲它們是字符串默認情況下。 'int(enter)'和'int(enter2)' – karthikr

+0

請注意,代碼中存在更多問題。如'enter2 <'0'或enter2>'999'檢查將無法正常工作。在進行這些檢查之前,您必須轉換爲「int」 – karthikr

回答

1

您的問題是,通過使用eg.enterbox功能,數字用戶輸入將被視爲字符串。爲了解決這個問題,我們把輸入框返回的'string'發送給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' 是一個字符串,而不是像數字一樣處理;)

2

你不能減去兩個字符串,先將它們轉換爲整數。

Subtract = int(enter2) - int(enter) 
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) 
0

我認爲這是你面對這裏只是parsing問題,因爲我們知道,Python不只是從鍵盤string值接受,因爲在它的代碼沒有變量類型定義,這就是爲什麼我們總是需要將輸入轉換或解析爲適當的類型。

>>> a = "3.14" 
>>> float(a) 
3.14 
>>> int(float(a)) 
3 
相關問題