2017-12-13 14 views
2

forループを使用して正規表現と一致するリストIPアドレスをユーザから取得したいとします。これは私のコードです。必要な正規表現が入力から一致しない場合に、Pythonのループで繰り返しを繰り返す方法

count=input('Enter number of machines:') 
usrip=re.compile("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}") 
for i in range(1,count): 
     user=raw_input('Enter the ip_address of machine '+str(i)+':') 
     if (usrip.match(user)): 
      mac_list.append(user) 
     else: 
      print("Enter a valid user name and ip address") 

これは、このように動作します

Enter number of machines: 3 
Enter the ip_address of machine 1: not an ip 
Enter a valid user name and ip address 
Enter the ip_address of machine 2: 12345 
Enter a valid user name and ip address 

しかし、私は期待通りの入力を求めるプロンプトが動作するように、もし条件が失敗した特定の反復を繰り返します。このように、

Enter number of machines: 3 
Enter the ip_address of machine 1: not an ip 
Enter a valid user name and ip address 
Enter the ip_address of machine 1: 12345 
Enter a valid user name and ip address 
Enter the ip_address of machine 1: 192.168.1.1 
Enter the ip_address of machine 2: 

助けていただければ幸いです。 ありがとうございます。

+0

をお試しください:IPSのためにユーザーを求めて、無限ループを作成し、それらを追加します有効であればリストを表示し、十分なときには終了します。 – L3viathan

答えて

0

私はこれが重複しているとは思いませんが、解決策は、他の問題になっているものと類似している。この

count=input('Enter number of machines:') 
usrip=re.compile("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}") 
for i in range(1,int(count)): 

     user=input('Enter the ip_address of machine '+str(i)+':') 
     while not (usrip.match(user)): 
      print("Enter a valid user name and ip address") 

      user=input('Enter the ip_address of machine '+str(i)+':') 

     if (usrip.match(user)): 
      mac_list.append(user) 
関連する問題