2017-09-21 2 views
0

AIDE! Je suis coincé avec ce script python. Donc, fondamentalement, je veux que mon programme exécute la première partie du code quand il y a une entrée provenant de l'utilisateur pour les trois variables.Si, elif, impression basée sur trois variables d'une entrée en python

J'essayais d'avoir fondamentalement s'il y a. dans un, tiret en b, et. dans c alors exécutez ces instructions d'impression. Sinon, faites ce qui est ci-dessous. Remarque: le premier code a des instructions d'impression différentes des autres. Je veux qu'il exécute la première partie du code basée sur a, b, c ayant tous une entrée. Appréciez l'aide

Code

a = raw_input("Enter ip address: ") 
b = raw_input("Enter range: ") 
c = raw_input("Enter network: ") 

#should print ip adress, range, and network combined 
if '.' in a + '-' in b + '.' in c: 
    ips = b.split('-') 
    print 'config firewall address\n','edit "ip-' + str(a) + '"' 
    print 'set subnet ' + str(a) + '/32' 
    print 'next' 
    print 'edit "ip-' + str(b) + '"' 
    print ('set type iprange') 
    print ('set start-ip '+ips[0]) 
    print 'set end-ip '+ips[1] 
    print 'next' 
    print 'edit "net-' + str(c) + '"' 
    print 'set subnet ' + str(c) + '' 
    print 'next' 
    print 'end' 

sortie

Le reste des pistes de code basé sur l'entrée d'utilisateur.

#SHOULD print ip adress, range, and network combined 
Enter ip address: 10.203.1.10 
Enter range: 10.228.50.88-10.228.50.91 
Enter network: 172.27.0.0/16 
config firewall address 
edit "ip-10.203.1.10" 
set subnet 10.203.1.10/32 
next 
end 

Je ne veux pas que la dernière sortie soit comme ça. C'est ma sortie désirée.

Enter ip address: 10.203.1.10 
Enter range: 10.228.50.88-10.228.50.91 
Enter network: 172.27.0.0/16 
config firewall address 
edit "ip-10.203.1.10" 
set subnet 10.203.1.10/32 
next 
edit "ip-10.228.50.88-10.228.50.91" 
set type iprange 
set start-ip 10.228.50.88 
set end-ip 10.228.50.91 
next 
edit "net-172.27.0.0/16" 
set subnet 172.27.0.0/16 
next 
end 

Que dois-je faire?

+1

Le programme est-il en cours d'exécution? Ou vous avez manuellement donné la sortie désirée? Essayez d'utiliser «si». en a et '-' en b et '.' dans c' et l'indentation est aussi foutu – Confused

+0

Il fonctionne mais pas comment je le veux. Il imprime l'entrée mais je veux courir en fonction de a, b, c étant vrai ou sachant qu'ils contiennent un point ou un tiret. –

Répondre

0

Si vous voulez vérifier si plusieurs conditions sont vraies, au lieu de:

if '.' in a + '-' in b + '.' in c:

... vous devriez utiliser:

if all(['.' in a, '-' in b, '.' in c]):

... ou ...

if '.' in a and '-' in b and '.' in c:

Vous devez également vous assurer que vous indentez correctement votre code.

+0

Parfait! C'est exactement ce que je voulais accomplir Je ne savais pas comment tester les conditions de mulitiple depuis que je suis un débutant en python. Je viens juste d'apprendre la langue il y a 2 semaines. –