0

だから私はこれを得ることができないようです。「while」ループがなければ、このコードは正常に動作しますが、ループを適用するとすぐに正しく動作しなくなります。何らかの理由で、x を文字列として扱っています。x が 2 の場合のように、y は 16 ではなく '2222' と出力されます。ありがとう!

go = 'y'

while go == 'y':

    print('enter x')
    x = input()

    y = x * 4

    print(y)
print('go again?')

go = input()
4

2 に答える 2

1

Python 3 のinput関数は常に文字列を返します。これはinput、ユーザーが入力した内容に応じて異なる種類の Python オブジェクトを返す Python 2 からの変更です。Python 3 のバージョンは、Python 2 のraw_input.

その背景を念頭に置いて、コードを修正するのは簡単です。コンストラクターを呼び出してint、文字列を整数に変換するだけです。または、整数以外の値 ( など1.4)をサポートする場合は、float代わりに使用します。

余談ですが、コードは現在質問でフォーマットされているため、無限ループがあります。変数を変更するロジックはgo本当に最上位にありますか? その場合、ループ中に変更されることはなく、永久に実行されます。

于 2013-02-27T03:46:56.657 に答える
0

これは、実際には Python のバージョンに依存します。 input文字列が見つかった場合、文字列を自動的に整数に変換します。これを防ぐにはraw_input、python < 3 で関数を使用します。python 3 以降では、これがデフォルトの動作だと思います。

于 2013-02-27T03:46:40.243 に答える