1

コードからは自明ですが、入力がこれらの値と等しくないかどうかをもう一度確認したいと思います。これでうまくいくと思ったのですが、うまくいかず、グリッチがあります。これを行うより良い方法は何ですか?

type=input("Please choose an option: ")
while type.isalpha() == False:
    type=input("Please choose an option: ")
while type != ("a" and "A" and "b" and "B" and "c" or "C"):
    type=input("Please choose an option: ")
4

3 に答える 3

4

リストされた要素の1つであるwhile not type in ("a","A","b","B" ...)かどうかを確認するだけです。type

上記のコードは、コメントで述べたように、 とが最初に評価されるwhile type != someListElementため、andと同等です。or

于 2013-10-03T23:52:39.320 に答える
1

最も簡単な解決策は、使用することだと思います

type = raw_input("Please choose an option: ")
while type not in list('AaBbCc'):
    type = raw_input("Please choose an option: ")

listは、文字列から 1 文字の文字列のリストに変換します。これは、 を使用して含まれているかどうかをテストできますinisalphaあなたがチェックしているものはすべてすでに手紙なので、 のテストは必要ないと思います。

また、ユーザー入力を取得するのraw_inputではなく、常に使用する必要があります。これは、常に文字列を返し、ユーザーが入力したものを試行するためです。inputraw_inputinputeval

(これは、Python 2 を使用していることを前提としています。Python 3 を使用している場合は、以前のinputものであり、もう存在しません。)raw_inputraw_input

于 2013-10-04T00:27:05.290 に答える
1

次のように書く必要があります。

while (type != "a" and type !="A" and type !="b" and type !="B" and type !="c" or type !="C"):
于 2013-10-03T23:55:17.940 に答える