2017-03-01 4 views
-1

ユーザが1だけを入力するか、2431のように1を含む整数が入力された場合、メッセージが表示されます。私が抱えている問題は、ユーザーが1回2回入力したように、プログラムがメッセージを連続して表示しないことです。入力が3115であればプログラムは1を検出しません。Python - 文字の検出と文字の表示

one = False 
    guess = input('Enter A Four Value Integer With Different Values Except for 1: ') 
    while guess in (1,'1'): 
     print('No ones are allowed') 
     one = True 
     break 
+2

あなたの現在の設定は '2431'が' 1'にあるかどうかをチェックしています。言い換えれば、ロジックはバックツーフロントです。また、 'input'は常に文字列を返すので、' 1'をチェックする必要はありません。 – roganjosh

+0

'guess'も' while'ループの外にありますので、あなたがそれをトリガーすると、別の推測をするように促されません。 'while'ループの予想される動作を明確にすることはできますか? – roganjosh

答えて

1

これはトリックを行う必要があります。

contains_one = True 
guess = '1' 
while '1' in guess: 
    print('No ones are allowed') 
    guess = input('...') 

あなたは、whileループを使用したとの正しい考えを持っていましたが、あなたが最後にbreakを置くので、それが唯一の繰り返しを行うだろうし。コメントの中で述べたように、inputは、条件が満たされない場合には、再定義されるべきループ内になければなりません。

ここでループの外にある推測を初期化して、ループに入ることができるようにします。

0

pythonのinput関数を使用すると、その値はstr型です。

ので、あなたがこのように試すことができます:あなたは、エラーメッセージを必要としない場合

while True: 
    guess = input('Number with no 1s: ') 
    if '1' in guess: 
     print("No ones are allowed.") 
    else: 
     break 

:これは私が考えることができるきれいなソリューションです

if_1 = lambda :True if '1' in input('value?: ') else False 
while if_1(): 
    print('No 1 is allowed!') 
else: 
    print('Great!') 

0

コードを少し簡略化できます:

guess = '1' 
while '1' in guess: 
    guess = input('Number with no 1s: ') 
関連する問題