1

これが実行される瞬間に、ユーザーは「c」または「v」を入力して母音または子音を要求できます。それ以外の場合はエラーがスローされます。

おそらくisistanceであると想定したキャッチを追加するようにコードを編集するにはどうすればよいですか?

for i in range(9):
    x = input("letter("+str(i+1)+"), Would you like a consonant (c) or a vowel (v)? :")
    if x == 'c':
        randomLetters += getConsonant()
        print(randomLetters)
    elif x == 'v':
        randomLetters += getVowel()
        print(randomLetters)
return (randomLetters)

興味のある人のための完成したコード。答えてくれてありがとう。

for i in range(9):
    msg = "letter("+str(i+1)+"/9), Would you like a consonant (c) or a vowel (v)? :"
    x = input(msg)
    while x != "c" and x != "v":
        print("put a damn c or v in")
        x = input(msg)
    if x == 'c':
        randomLetters += getConsonant()
        print(randomLetters)
    elif x == 'v':
        randomLetters += getVowel()
        print(randomLetters)
return (randomLetters)
4

2 に答える 2

0

Python 3.x を使用していると仮定するとinput()、文字列が返されます。そう:

for i in range(9):
    x = input("letter("+str(i+1)+"), Would you like a consonant (c) or a vowel (v)? :")
    if not x.isalpha(): raise TypeError('x can only have be a string')
    if x == 'c':
        randomLetters += getConsonant()
        print(randomLetters)
    elif x == 'v':
        randomLetters += getVowel()
        print(randomLetters)
return (randomLetters)

入力を 'c' または 'v' にしたい場合:

for i in range(9):
    while not x in ('c', 'v'):
        x = input("letter("+str(i+1)+"), Would you like a consonant (c) or a vowel (v)? :")
    if x == 'c':
        randomLetters += getConsonant()
        print(randomLetters)
    elif x == 'v':
        randomLetters += getVowel()
        print(randomLetters)
return (randomLetters)
于 2013-04-02T18:15:03.073 に答える
0

コードにはいくつかの問題があります。

  1. 入力に関係なく、次の文字に進んでいます。
  2. "c"入力がまたはでない場合は、ケースを処理していません"v"
  3. 無効な入力についてユーザーにメッセージを送信していません。

ここで行ったこと:
for ループの各反復で、有効な入力が与えられるまで続く無限ループに入ります。

  1. 最初の入力を取り、while ループに入ります。
  2. 有効な入力の場合、「有効な」処理の後break、inf ループを実行し、次の文字に移動します。
  3. 無効な入力の場合は、エラー メッセージを表示し、再度入力して 2 に進みます。

「修正済み」バージョン1 :

for i in range(1,10): # no need for the +1 in string.
    msg = "letter({0}), Would you like a (c)onsonant or a (v)owel? : ".format(i)
    x = input(msg) # raw_input(msg)
    while True: # infinite loop
        if x == 'c':
            randomLetters += getConsonant()
            print(randomLetters)
            break
        elif x == 'v':
            randomLetters += getVowel()
            print(randomLetters)
            break
        else: # x not in ['c','v']
            print('Invalid input, {0} is not valid'.format(x))
            x = input(msg) # get new input and repeat checks
return (randomLetters)

1 いくつかの追加調整を加えたもの

于 2013-04-02T18:33:15.320 に答える