-1

これらは、ボタンを押したときに入力ボックスに表示される数字です

def numberone():
    displayblox.insert(0,int(1))

def numbertwo():
    displayblox.insert(0,int(2))

def numberthree():
    displayblox.insert(0,int(3))

def numberfour():
    displayblox.insert(0,int(4))

def numberfive():
    displayblox.insert(0,int(5))

def numbersix():
    displayblox.insert(0,int(6))

def numberseven():
    displayblox.insert(0,int(7))

def numbereight():
    displayblox.insert(0,int(8))

def numbernine():
    displayblox.insert(0,int(9))

def plusone():
    displayblox.insert(0,'+')

def minusone():
    displayblox.insert(0,'-')

def divideone():
    displayblox.insert(0,'/')

def timesone():
    displayblox.insert(0,'*')

この部分は、= を押したときに入力ボックスにあるものを合計してから表示します

def equalsone():
    answer = int(displayblox.get())
    displayblox.delete(0,END)
    displayblox.insert(0,answer) 
4

2 に答える 2

1

単に呼び出しint('2+2')て取得することはできません4。このint()関数は数値を整数に変換するだけで、算術演算は行いません。

これを行うには、文字列を解析して解析ツリーにし、その上で算術演算を行う必要があります。ツリーに戻す必要がある文字列よりも、ツリーの形式で入力を追跡する方が簡単な場合があります。

または、 を使用することもできますがeval、それはダーク サイドにつながります:は、スローされたコードをeval喜んで実行するため、一般的に安全ではないと見なされます。これは実際には安全なケースかもしれませんが、確信が持てない場合は、そうではないと仮定してください。

于 2013-03-17T16:06:44.503 に答える
0

できるよ:

my_str="2+2"
result=int(my_str.split("+")[0])+int(my_str.split("+")[1])

これは、文字列を list に分割することで機能["2","2"]します。次に、int に変換するリスト インデックスで int を呼び出します。次に、両方とも であるため、それらを合計できますint

加算文字列の長さが定義されていないなど、もう少し複雑なものが必要な場合は、次のようにします。

def compile_them_all(in_string,operator):
    if not isinstance(operator,str): raise Exception("operator must be a string.")
    if not isinstance(in_string,str): raise Exception("in_string must be a string.")
    return sum(int(x) for x in in_string.strip().split(operator))

または、 を実行することもできますresult=eval("2+2")が、Python コードを入力として配置でき、実行時に Python プログラムに影響を与える可能性があるため (たとえば、実行するresult=eval("exit(0)")とプログラムが終了します)、これはお勧めできません。

于 2013-03-17T16:14:48.093 に答える