2016-08-19 5 views
1

私はPythonの初心者です。ユーザに0より大きい整数を入力するよう求める小さなプログラムを作成しようとしていました。有効期限までユーザーの番号を確認してください。整数の妥当性をチェックするためのPythonでの永続プログラムの作成

私は以下のように試しましたが、間違った結果が出ています。私のエラーを理解するのを助けてくれますか?

num = input('please enter a number: ') 
n = int(num) 
while n < 0: 
    num = input('please enter a number: ') 
    if n >= 0: 
     print('Valid number') 
    else: 
     print('Invalid number') 

それは入力機能せずにコードを起動することは可能ですか?

(NUM = INT()で開始したい)あなたの問題は、コードあなたは、nの値を更新していないからだとInvalid numberすべての時間を書いて、終了していない場合はお時間を

+0

「間違った結果が」どういう意味? – doctorlove

+2

あなたが目をバインドinput' '使う二時間を結果は名前 'num'になります。 whileループは 'n'という名前をチェックし、' False'にはなりません。 –

+0

質問を編集して、入力、予想される出力、および実際の出力についてさらに説明します。 – Relequestual

答えて

1

をありがとうございました。あなたはそれをただ一度割り当てました。あなたの問題に対する解決策は、次のとおりです。

n = -1 
while n < 0: 
    n = int(input('please enter a number: ')) 
    if n >= 0: 
     print('Valid number') 
    else: 
     print('Invalid number') 

ところで、入力機能を使用しないでコードを開始する手間を省きます。

編集:あなたが今言ったよう

- あなたは、コマンドラインに負の整数を渡すことにもかかわらず、読みの入力を維持したいです。これは、あなたがこれを実現するために役立つはずです:

while True: 
    n = int(input('please enter a number: ')) 
    if n >= 0: 
     print('Valid number') 
    else: 
     print('Invalid number') 

あなたはプログラムがctrl + Cと言うことができます終了するまで、このループは永遠に行きます。 True引数が決してfalseにならないので、while True:は永遠に進行中のループを参照してください。

+0

ご協力いただきありがとうございます。それは有り難いです。私はプログラムを永久に実行することについて考えていました。あなたが書いたこのプログラムは、私が正の数をフィードするときに壊れます。もし彼らがポジティブだとしても自分の数字をチェックし続けたいのですが?もう一度ありがとう –

+0

私はちょうど私の答えを更新しました。あなたがそのようにそれを意味することを願っています。 –

+0

はい、これはまさに私が意味していたものです。どうもありがとうございました! –

1

コードの背後にあるロジックにエラーがあります。

    あなたが最初に番号をユーザーに尋ねると、彼は0以上の数値を入力すると、whileループは(あなたのスクリプトで: while n < 0:)を開始することはありません
  1. 、私はあると仮定し、プログラムのゴールは、あなたが言ったように、を "0より大きい整数を入力するように"にするためです。ユーザーが0以下である番号を入力した場合

  2. は、whileループを開始しますが、それのために内部で破ることは決してありません、変数nの値が変化しない、唯一のnumの値を行います。

これはユーザーの入力数0より大きく、そしてあなたが彼らの入力に関するフィードバックを与えたいと思うことを確認あなたはしたいことを考慮すると、適切なスクリプトです。

n = None 

while n <= 0: 

    n = int(input('please enter a number: ')) 

    if n <= 0: 
     print('Invalid number') 

    else: 
     pass # the loop will break at this point 
      # because n <= 0 is False 

print('Valid number') 

コードには、0より大きい数値が書き込まれるまで、ユーザーがループしています。

別の解決策はループ内、0より大きいint(num)かどうかをチェックし、それがある場合、print 'Valid number'および停止ループにbreakを行うになるであろう。そうでないならば、ループはwhile n < 0:で定義する必要はありませんが、print 'Invalid number'は(;むしろwhile True:によって

また、あなたがこれで意味ですか:。

、コードを起動することは可能です入力機能なし?

(NUM = INT()で開始したい)この部分を明確にしてください。

+0

あなたの明確な答えをお寄せいただきありがとうございます。つまり、入力質問を複製したことが分かりました(数字を入力してください)。私は反復したくなかった。そしてwhileループの前に、最初に何も書き込まないと、Pythonはエラーを出します。だから、私は入力の質問を複製したくない。 –

+0

さて、このコードはうまくいきます:) –

関連する問題