contingut
En el procĆ©s d'aprendre a programar, sovint cal crear programes que no siguin tan fĆ cils d'aplicar a la vida real. Al cap i a la fi, de tant en tant nomĆ©s heu de seguir les instruccions sota determinades condicions. Per poder implementar-ho al programa, tots els idiomes tenen declaracions de control. Amb la seva ajuda, podeu controlar el flux d'execuciĆ³ del codi, creant bucles o realitzant determinades accions nomĆ©s quan una determinada condiciĆ³ Ć©s certa.
Avui parlarem de la declaraciĆ³ if, que verifica la situaciĆ³ actual d'una determinada condiciĆ³ i, a partir d'aquesta informaciĆ³, pren decisions sobre accions posteriors.
Tipus de declaracions de control
En general, if no Ć©s l'Ćŗnica declaraciĆ³ que controla el flux d'un programa. AixĆ com ell mateix pot ser un component d'una cadena mĆ©s gran d'operadors.
TambĆ© hi ha bucles i sentĆØncies que controlen el procĆ©s de la seva execuciĆ³. Avui nomĆ©s parlarem de l'operador condicional i de les cadenes en quĆØ pot participar.
A la programaciĆ³, hi ha una cosa com la ramificaciĆ³. Ćs precisament aixĆ² el que significa una seqĆ¼ĆØncia d'ordres que nomĆ©s s'executa si una determinada condiciĆ³ Ć©s certa. Els criteris en si mateixos poden ser diferents:
- Igualtat d'una variable amb un valor determinat.
- RealitzaciĆ³ d'una acciĆ³ concreta.
- Estat de l'aplicaciĆ³ (colĀ·lapsada o no).
L'espectre pot ser molt mƩs gran. Les declaracions condicionals vƩnen de diversos tipus:
- Amb una branca. Ćs a dir, es realitza una Ćŗnica comprovaciĆ³, com a resultat de la qual es realitzen determinades accions.
- Amb dues o mƩs branques. Si el criteri 1 Ʃs cert, comproveu el criteri 2. Si Ʃs cert, comproveu el 3. Per tant, feu tantes comprovacions com sigui necessari.
- Amb diverses condicions. AquĆ tot Ć©s senzill. L'intĆØrpret verifica si hi ha diverses condicions o una d'elles.
afirmaciĆ³ if
L'estructura de la declaraciĆ³ if Ć©s similar en tots els idiomes. Tanmateix, a Python, la seva sintaxi Ć©s una mica diferent de totes les altres:
si condiciĆ³:
<Š²Ń Š¾Š“ŃŃŠµŠµ Š²ŃŃŠ°Š¶ŠµŠ½ŠøŠµ 1>
<Š²Ń Š¾Š“ŃŃŠµŠµ Š²ŃŃŠ°Š¶ŠµŠ½ŠøŠµ 2>
<Š½Šµ Š²Ń Š¾Š“ŃŃŠµŠµ Š²ŃŃŠ°Š¶ŠµŠ½ŠøŠµ>
En primer lloc, es declara el propi operador, desprĆ©s de la qual s'escriu la condiciĆ³ en quĆØ comenƧa a funcionar. La condiciĆ³ pot ser vertadera o falsa.
AixĆ² Ć©s seguit d'un bloc amb ordres. Si immediatament segueix un criteri a complir, aleshores la seqĆ¼ĆØncia d'ordres corresponent s'anomena bloc if. Podeu utilitzar-hi qualsevol nombre d'ordres.
AtenciĆ³! El sagnat dins de totes les ordres de bloc if ha de tenir la mateixa mida. Els lĆmits del bloc estan determinats pels sagnies.
Segons la documentaciĆ³ lingĆ¼Ćstica, el sagnat Ć©s de 4 espais.
Com funciona aquest operador? Quan l'intĆØrpret veu la paraula if, immediatament comprova l'expressiĆ³ amb els criteris especificats per l'usuari. Si aquest Ć©s el cas, llavors comenƧa a buscar instruccions i a seguir-les. En cas contrari, es salten totes les ordres d'aquest bloc.
Si una instrucciĆ³ desprĆ©s de la condiciĆ³ no estĆ sagnada, no es tractarĆ com un bloc if. En la nostra situaciĆ³, aquesta lĆnia Ć©s
AquĆ teniu un fragment de codi per a un exemple de com funciona aquest operador.
nombre = int(entrada ("Introdueix un nĆŗmero: "))
si el nombre > 10:
print ("El nombre Ʃs mƩs gran que 10")
Aquest programa demana a l'usuari un nĆŗmero i comprova si Ć©s superior a 10. Si Ć©s aixĆ, retorna la informaciĆ³ adequada. Per exemple, si l'usuari introdueix el nĆŗmero 5, el programa simplement finalitzarĆ i ja estĆ .
PerĆ² si especifiqueu el nĆŗmero 100, l'intĆØrpret entendrĆ que Ć©s mĆ©s de deu i ho informarĆ .
AtenciĆ³! En el nostre cas, si la condiciĆ³ Ć©s falsa, el programa s'atura, perquĆØ no es donen ordres desprĆ©s de la instrucciĆ³.
NomĆ©s hi ha una comanda al codi anterior. PerĆ² n'hi ha molts mĆ©s. L'Ćŗnic requisit Ć©s fer sagnat.
Ara analitzem aquesta seqĆ¼ĆØncia d'ordres.
nombre = int(entrada ("Escriu un nĆŗmero: "))
si el nombre > 10:
imprimir ("primera lĆnia")
imprimir ("segona lĆnia")
imprimir ("tercera lĆnia")
print("La lĆnia que s'executa, independentment del nĆŗmero introduĆÆt")
print("Finalitzar l'aplicaciĆ³")
Intenteu endevinar quina serĆ la sortida si introduĆÆu els valors 2, 5, 10, 15, 50.
Com podeu veure, si el nĆŗmero introduĆÆt per l'usuari Ć©s superior a deu, s'emetran tres lĆnies + una amb el text "Executar cada vegada..." i una "Finalitzar", i si Ć©s inferior a deu, nomĆ©s una, amb un text diferent. NomĆ©s s'executaran les lĆnies 3,4,5, XNUMX, XNUMX si Ć©s cert. Tanmateix, les dues Ćŗltimes lĆnies s'escriuran sense importar quin nĆŗmero especifiqui l'usuari.
Si utilitzeu les declaracions directament a la consola, el resultat serĆ diferent. L'intĆØrpret activa immediatament el mode multilĆnia si, desprĆ©s d'especificar el criteri de verificaciĆ³, premeu Intro.
Suposem que hem escrit la segĆ¼ent seqĆ¼ĆØncia d'ordres.
>>>
>>> n = 100
>>> si n > 10:
...
DesprĆ©s d'aixĆ², veurem que >>> ha estat substituĆÆt per punts suspensius. AixĆ² vol dir que el mode d'entrada multilĆnia estĆ habilitat. En paraules senzilles, si premeu Enter, se us transferirĆ a l'entrada de la segona etapa de la instrucciĆ³.
I per sortir d'aquest bloc, cal afegir una construcciĆ³ mĆ©s al bloc if.
>>>
>>> n = 100
>>> si n > 10:
ā¦ imprimir(Ā«nv 10Ā»)
...
Si la condiciĆ³ no Ć©s certa, el programa finalitza. Aquest Ć©s un problema, ja que l'usuari pot percebre que aquest programa s'ha tancat a causa d'una fallada. Per tant, Ć©s necessari donar feedback a l'usuari. Per a aixĆ², s'utilitza un enllaƧ si una altra cosa.
operador d'expressiĆ³ si una altra cosa
Aquest operador us permet implementar un enllaƧ: si l'expressiĆ³ coincideix amb una regla determinada, feu aquestes accions, i si no, d'altres. Ćs a dir, permet dividir el flux del programa en dues vies. La sintaxi Ć©s intuĆÆtiva:
si condiciĆ³:
# si bloqueja
declaraciĆ³ 1
declaraciĆ³ 2
etcĆØtera
en cas contrari:
# else block
declaraciĆ³ 3
declaraciĆ³ 4
etcĆØtera:
Expliquem com funciona aquest operador. Primer, la instrucciĆ³ estĆ ndard s'executa al fil teix, comprovant si coincideix condiciĆ³ "Cert o fals". Les accions posteriors depenen dels resultats de la comprovaciĆ³. Si Ć©s cert, la instrucciĆ³ que es troba a la seqĆ¼ĆØncia d'instruccions que segueix la condiciĆ³ s'executa directament. teix, si Ć©s fals, doncs else.
D'aquesta manera podeu gestionar els errors. Per exemple, l'usuari ha d'introduir un radi. Ćbviament, nomĆ©s pot ser un nombre amb un signe mĆ©s, o Ć©s un valor nul. Si Ć©s inferior a 0, haureu d'emetre un missatge demanant-vos que introduĆÆu un nĆŗmero positiu.
AquĆ teniu el codi que implementa aquesta tasca. PerĆ² aquĆ hi ha un error. Intenta endevinar quin.
radi = int(entrada ("Introdueix el radi: "))
si radi >= 0:
print ("CircumferĆØncia = ", 2 * 3.14 * radi)
print("Ćrea = ", 3.14 * radi ** 2)
en cas contrari:
print("Si us plau, introduĆÆu un nĆŗmero positiu")
Error de desajust de sagnat. Si i Altrament s'han d'ubicar sense ells o amb el mateix nombre d'ells (segons si estan imbricats o no).
Donem un altre cas d'Ćŗs (on tot serĆ correcte amb l'alineaciĆ³ de l'operador): un element d'aplicaciĆ³ que comprova una contrasenya.
password = input("Introdueix la contrasenya: ")
si contrasenya == Ā«sshhĀ»:
imprimir ("Benvingut")
en cas contrari:
print("AccƩs denegat")
Aquesta instrucciĆ³ omet la persona mĆ©s si la contrasenya Ć©s sshh. Si hi ha alguna altra combinaciĆ³ de lletres i nĆŗmeros, mostrarĆ el missatge "AccĆ©s denegat".
enunciat-expressiĆ³ if-elif-else
NomĆ©s si diverses condicions no sĆ³n certes, s'executa la instrucciĆ³ que hi ha al bloc. else. Aquesta expressiĆ³ funciona aixĆ.
si condiciĆ³_1:
# si bloqueja
declaraciĆ³
declaraciĆ³
mĆ©s declaraciĆ³
condiciĆ³ elif_2:
# primer bloc elif
declaraciĆ³
declaraciĆ³
mĆ©s declaraciĆ³
condiciĆ³ elif_3:
# segon bloc elif
declaraciĆ³
declaraciĆ³
mĆ©s declaraciĆ³
...
else
declaraciĆ³
declaraciĆ³
mĆ©s declaraciĆ³
Podeu especificar qualsevol nombre de condicions addicionals.
Declaracions niuades
Una altra manera d'implementar diverses condicions Ć©s inserir comprovacions de condicions addicionals al bloc if.
Operador if dins d'un altre bloc de condicions
gre_score = int(entrada ("Introdueix el teu lĆmit de crĆØdit actual"))
per_grad = int(entrada ("IntroduĆÆu la vostra qualificaciĆ³ creditĆcia: "))
si per_grad > 70:
# bloc si exterior
si gre_score > 150:
# bloc if intern
print("Enhorabona, has rebut un prƩstec")
en cas contrari:
print("Ho sentim, no sou elegible per a un prƩstec")
Aquest programa realitza una comprovaciĆ³ de la qualificaciĆ³ creditĆcia. Si Ć©s inferior a 70, el programa informa que l'usuari no tĆ© dret a crĆØdit. Si Ć©s mĆ©s gran, es realitza una segona comprovaciĆ³ per veure si el lĆmit de crĆØdit actual Ć©s superior a 150. En cas afirmatiu, es mostra un missatge que s'ha emĆØs el prĆ©stec.
Si tots dos valors sĆ³n falsos, es mostra un missatge que l'usuari no tĆ© la possibilitat d'obtenir un prĆ©stec.
Ara revisem una mica aquest programa.
gre_score = int(entrada ("Introdueix el lĆmit actual: "))
per_grad = int(entrada ("Introdueix la puntuaciĆ³ de crĆØdit: "))
si per_grad > 70:
si gre_score > 150:
print("Enhorabona, has rebut un prƩstec")
en cas contrari:
print("El teu lĆmit de crĆØdit Ć©s baix")
en cas contrari:
print("Ho sentim, no sou elegible per al crĆØdit")
El codi en si Ć©s molt similar, perĆ² imbricat if tambĆ© proporciona un algorisme en cas que la condiciĆ³ resulti falsa. Ćs a dir, el lĆmit de la targeta Ć©s insuficient, perĆ² l'historial de crĆØdit Ć©s bo, es mostra el missatge "Tens una qualificaciĆ³ creditĆcia baixa".
declaraciĆ³ if-else dins d'una condiciĆ³ else
Fem un altre programa que determini la nota d'un estudiant en funciĆ³ de les puntuacions de les proves.
puntuaciĆ³ = int(entrada ("Introdueix la teva puntuaciĆ³: "))
si puntuaciĆ³ >= 90:
print("Genial! La teva nota Ć©s A")
en cas contrari:
si puntuaciĆ³ >= 80:
print("Genial! La teva nota Ć©s B")
en cas contrari:
si puntuaciĆ³ >= 70:
print("BĆ©! La teva nota Ć©s C")
en cas contrari:
si puntuaciĆ³ >= 60:
print(āLa teva nota Ć©s D. Val la pena repetir el material.ā)
en cas contrari:
print("Has suspĆØs l'examen")
L'aplicaciĆ³ primer comprova si la puntuaciĆ³ Ć©s superior o igual a 90. En cas afirmatiu, retorna una nota A. Si aquesta condiciĆ³ Ć©s falsa, es realitzen comprovacions posteriors. Veiem que l'algorisme Ć©s gairebĆ© el mateix a primera vista. AixĆ que en comptes de comprovar dins else millor utilitzar una combinaciĆ³ si-elif-una altra cosa.
AixĆ que l'operador if realitza una funciĆ³ molt important: s'assegura que certes peces de codi s'executen nomĆ©s si Ć©s necessari. Ćs impossible imaginar programar sense ell, perquĆØ fins i tot els algorismes mĆ©s senzills requereixen bifurcacions com "si aneu a l'esquerra, ho trobareu, i si aneu a la dreta, heu de fer aixĆ² i allĆ²".