1

コードを短くしてより多くの機能を持たせようとしていますが、正しく動作しません。

Heres私のコード(基本的に)

def times4():  
    number = droid.dialogGetInput('Input', 'Enter a number between 1 and 10').result  
    number4 = number * 4  
    if number == '1':  
        droid.dialogCreateAlert(number,number + ' * 4 =' + number4)  
        droid.dialogSetPositiveButtonText('Ok')  
        droid.dialogShow()  
        droid.dialogGetResponse()  

そして、私はこれを取得します:

1,1 * 4 = 1111

これを取得したいとき:

1,1 * 4 = 4
4

7 に答える 7

6

あなたが欲しい:

number = int(number)

現時点では、「数値」は文字列(つまり、1ではなく「1」)であるため、4を掛けると、当然「1111」になります。int()を使用すると、文字列の整数表現が得られます。

于 2011-05-12T17:34:46.333 に答える
3

変数番号は文字列であり、int ではありません。したがって、「文字列乗算」を行います。number を int または float にキャストしてみてください。

number = int (number)

number = float (number)
于 2011-05-12T17:40:56.593 に答える
2

あなたの番号は文字列型だと思います。文字列に数値を掛けると、次のようなことをすると、同じ文字列の多くが返されます。

number4 = int(number) * 4 

動作するはずです。

于 2011-05-12T17:35:24.013 に答える
2

問題は、ユーザーが数値 (または何か) を入力すると、その入力が文字列として格納されることです。したがって、ユーザーの入力を取得するとき、取得しているのでは1なく、取得してい'1'ます。

>>> '1' * 4
'1111'

>>> 1 * 4
4

修正は変更することです

number = droid.dialogGetInput('Input', 'Enter a number between 1 and 10').result

number = int(droid.dialogGetInput('Input', 'Enter a number between 1 and 10').result)

乾杯

于 2011-05-12T17:36:17.923 に答える
0

この「ドロイド」キットはわかりませんが、dialogGetInput から文字列を返しているのではないかと思います。Python で文字列を N 倍すると、その文字列が N 回得られます。

>>> s = 'フー'
>>> s*4
「フフフフフ」
>>>

したがって、プログラムは整数 1 ではなく STRING '1' を認識しています。最初に答えを整数に変換する必要があります。

>>> s = '1' # 間違っている
>>> s * 4
'1111'
>>> s = int('1') # 右
>>> s * 4
4
>>>

また、誰かが数字以外のものを入力した場合 (つまり、タイプミスや、意図的にプログラムをクラッシュさせようとする人) に対処する準備をしておいてください。

>>> s = 'フー'
>>> 整数
トレースバック (最新の呼び出しが最後):
  ファイル ""、1 行目、
ValueError: 基数 10 の int() の無効なリテラル: 'foo'
>>>

データの変換は常に try で囲みます。

try:
   s = 'foo'
   i = int(s)
except ValueError, ex:
   MessageBox('Try again!')
于 2011-05-12T17:40:08.867 に答える
0

実際には、dialogGetInput はクラス「Result」のオブジェクトを返します。int() は「結果」を引数として受け入れないため、同様の問題があります。Result クラスがサポートするプロパティまたはメソッドについて、SL4A で参照が見つかりません。

アンドリュー

于 2011-05-23T15:32:37.100 に答える
0

期待される出力に対するコードのあり方は次のとおりです。

def times4():  
    result = droid.dialogGetInput('Input', 'Enter a number between 1 and 10').result
    number = int(result)

    if number >= 1 and number <= 10:
        number4 = number * 4  
        droid.dialogCreateAlert('%i' % number, '%i * 4 = %i' % (number, number4))  
        droid.dialogSetPositiveButtonText('Ok')  
        droid.dialogShow()  
        droid.dialogGetResponse()  
于 2011-05-12T17:52:30.843 に答える