0

私はPythonが初めてです。学習しようとしています。これは私のコードです:

import sys
my_int=raw_input("How many integers?")
try:
    my_int=int(my_int)
except ValueError:
    ("You must enter an integer")
ints=list()
count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False
    try:
        new_int=int(new_int)
    except:
        print("You must enter an integer")
    if isint==True:
        ints.append(new_int)
        count+=1

コードは実行されていますが、ループは常に繰り返されており、2 番目の整数を入力できません。

出力:

How many integers?3
Please enter integer1:1
Please enter integer1:2
Please enter integer1:3
Please enter integer1:

私のコードの何が問題なのかを知ることはできますか? ありがとうございました

4

3 に答える 3

4

コードの問題は、isint決して変更されず、常にFalseあるため、count決して変更されないことです。あなたの意図は、入力が有効な整数の場合、を増やすことだと思いますcount。そうでない場合は、何もしませんcount

コードは次のisintとおりです。フラグは必要ありません。

import sys

while True:
    my_int=raw_input("How many integers?")
    try:
        my_int=int(my_int)
        break
    except ValueError:
        print("You must enter an integer")
ints=list()
count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    try:
        new_int=int(new_int)
        ints.append(new_int)
        count += 1
    except:
        print("You must enter an integer")
于 2016-12-16T05:30:35.037 に答える
1

入力が int であるとアサートした後、 isint を更新する必要があります

更新: 最初の try-except には別の問題があります。入力が整数でない場合、プログラムは終了するか、最初に戻ることができるはずです。以下は、最初に整数を入力するまでループし続けます

ints=list()

proceed = False
while not proceed:
    my_int=raw_input("How many integers?")
    try:
        my_int=int(my_int)
        proceed=True
    except:
        print ("You must enter an integer")

count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False
    try:
        new_int=int(new_int)
        isint=True
    except:
        print("You must enter an integer")
    if isint==True:
        ints.append(new_int)
        count+=1
于 2016-12-16T05:14:27.187 に答える