2016-10-18 9 views
0

私はユーザーに何らかの情報を要求する関数を書いています。タスクの最後に、正しいかどうか確認するようにユーザーに指示します。 yesまたはyの場合、関数は続行する必要があります。それ以外の場合は、質問を繰り返す必要があります。関数は、ユーザーが入力するものに関係なく、停止した理由を私は把握カント:Python関数が正しくループしていないようです。

157 def runAllfunctions(): 
158 #  getAccessSecretName() 
159   mcIPNumber() 
160   makeNameMCTag() 
161   makeTfvars() 
162   makeMainTF() 
163   Provisioners() 
164   Resources() 
165   Outputs() 
166 
167 
168 def runTerraform(): 
169   getAccessSecretName() 
170   infoCorrect = raw_input('Is the information above correct? (y or n)') 
171   if infoCorrect.lower() == "yes" or "y": 
172     runAllfunctions() 
173   else: 
174     runTerraform() 
175 
176 runTerraform() 

私は、ユーザーがはい以外のものを入力するか、それがされますY runTerraformを(再実行する場合は、上から起こることを期待)、それが正しいまでユーザーに情報の入力を促します。

を答えはイエスではありませんまたはy

You Entered: 
Access Key: asdfds 
Secret Key: asfads 
Your full name is: dsafd dsafdas 

Is the information above correct? (y or n)n 
newnumber = 16 
Your EC2 instance will tagged: 
Name Tag: vlslabs16 
Multicast Tag: vlslabmc, 172.16.0.16 

時に再求めている必要があります。それは、それが通過すると、機能の残りを実行します正しいたらここ

は、私が見ているものです質問をもう一度。

答えがイエスまたはy確かである:

python terraTFgen.py 

Enter Access Key: asdfdsa 
Enter Secret Key: asdfads 
Enter your name: asdfads 

You Entered: 
Access Key: asdfdsa 
Secret Key: asdfads 
Your full name is: asdfads 

Is the information above correct? (y or n)y 
newnumber = 16 
Your EC2 instance will tagged: 
Name Tag: vlslabs16 
Multicast Tag: vlslabmc, 172.16.0.1 

^これが正しいです。

「はい」または「いいえ」の条件がなくなると、何も表示されなくなります。

psが、これは場合、あなたが好奇心旺盛だった、またはこれは

13 def getAccessSecretName(): 
14   global access_key, secret_key, yourName 
15   access_key = raw_input("Enter Access Key: ") 
16   secret_key = raw_input("Enter Secret Key: ") 
17   yourName = raw_input("Enter your name: ") 
18 
19   print "\n\nYou Entered:" 
20   print "Access Key: %s" % access_key 
21   print "Secret Key: %s" % secret_key 
22   print "Your full name is: %s\n" % yourName 
23   with open (tfVariables,"w") as text_file: 
24     text_file.writelines(['access_key = \"'+ access_key +'\"\nsecret_key = \"'+ se cret_key +'\"\n\n\n', 
25         'amis = {\n', 
26         ' ', 
27         'us-west-1 = '+ usWest1ami +'\n', 
28         ' ', 
29         'us-west-1 = '+ usWest2ami +'\n', 
30         ' ', 
31         '}']) 

感謝を助けている場合に質問をされた機能です!

+2

'' y ''という文字列は真実であるため、 '' what 'または' y''は常に真です。平等テストは、「または」によって配布されません。 infoCorrect.lower()== "yes"またはinfoCorrect.lower()== "y" 'またはinfoCorrect.lower()[" yes "、" y "]'を使用する必要があります。 – Blckknght

+0

@Blckkngt私はあなたが言っていることを得ると思いますが、それはなぜ配布されていませんか?それはどちらの条件にも "間違った"ものが適用されないと論理的に思われますか? – chowpay

+0

'または'は演算子を表示せず、結果の値のみを表示します。 '' foo "==" bar "や" foo "'は 'False'や' 'foo''に相当します。その後、短絡して '' foo ''(これは真実です)を返します。 – Blckknght

答えて

1

if条件はif infoCorrect.lower() == "yes" or infoCorrect.lower() == "y":である必要があります。

関連する問題