0

現在、ユーザーが 0 ~ 4 の数字を入力するプログラムを作成する必要がある課題に取り組んでいます。次に、プログラムは、ユーザーがどの番号を入力し、特定の文字列を出力するかをチェックします。たとえば、ユーザーが 4 を入力すると、プログラムは「80 以上: レベル 4」を出力します。

問題は、ユーザーがプログラムを終了できる必要があることです。プログラムを作成することにしたので、ユーザーが空白ではないものを入力すると (input != "":) プログラムが実行されますが、Enter キーを押すとプログラムが終了します。

これは私がこれまでに思いついたコードです:

def get_level():
    level = raw_input("Enter a number from 0-4 (Press <Enter> to quit): ")
    return level

def check_mark(level):
    if int(level) == 4:
        print "80 or above: Level 4"
    elif int(level) == 3:
        print "70 - 79: Level 3"
    elif int(level) == 2:
        print "60 - 69: Level 2"
    elif int(level) == 1:
        print "50 - 59: Level 1"
    elif int(level) == 0:
        print "Below 50: Level 0"
    else:
        print "ERROR: out of range"

def output(level):
   while level != "":
        level = raw_input("Enter a number from 0-4 (Press <Enter> to quit): ")
        check_mark(level)
        print

def main():
    user_level = get_level()
    user_mark = check_mark(user_level)
    print
    program_output = output(user_level)

main()

この問題は、raw_input が "while level != "":" ステートメントをアクティブにする文字列のみを受け入れるという事実に関係していることをよく知っています。各レベルの前に int() 演算子を配置して、これを回避しようとしました。問題は、入力が整数かどうかをチェックするため、ユーザーが空白を入力すると入力と競合することです。とにかくそのような何か。

だから私は誰かがこれを回避する方法を見つけるために私を導くことができることを望んでいました. それは大歓迎です!

4

2 に答える 2

1

次のループコードが必要になる可能性があります。

def output(level):
   level = raw_input("Enter a number from 0-4 (Press <Enter> to quit): ")
   while level != "":
        check_mark(level)
        level = raw_input("\nEnter a number from 0-4 (Press <Enter> to quit): ")
于 2012-05-15T14:03:01.787 に答える
0

入力の検証に近道があるとは思いません。したがって、ユーザーは「」または整数のいずれかを入力できます。ユーザーが文字を入力するとどうなりますか?

プログラムが壊れないように、それに応じて処理するすべての入力を確認します

# check for blank
if level == '':
  # exit for user

# validate input if not exit
try:
  level_int = int(level)
except ValueErrror:
  # integer not inputed

if not (0 <= level_int <= 4):
  # check that input is between 0  4
  # out of range

check_markまたは、電話をかけたときに期待を確認することもできますmain

于 2012-05-15T14:05:48.613 に答える