Comment puis-je ajouter un bouton qui ouvre chrome en python J'ai déjà écrit la window_page sachant que j'ai besoin du bouton voici le code:
from tkinter import * window = Tk() window.title("Python GUI App") window.configure(width=500, height=300) window.configure(bg='lightgray') window.mainloop()
3 Réponses :
Le problème réside dans votre structure. Si vous utilisez else
il fait toujours référence au dernier if
et à tout else if
entre eux. Donc, si votre dernier if
est faux, ce qui arrive si le signL
n'est pas "%"
vous entrerez toujours le else
.
Pour résoudre ce problème, vous devez corriger vos instructions if
, en utilisant des instructions else if
.
Exemple avec conditions IF:
switch(signL) { case "*": Console.Write("result is: "); Console.WriteLine(frsIn * secIn); break; case "+": Console.Write("result is: "); Console.WriteLine(frsIn + secIn); break; case "/": Console.Write("result is: "); Console.WriteLine(frsIn / secIn); break; case "-": Console.Write("result is: "); Console.WriteLine(frsIn - secIn); break; case "%": Console.Write("result is: "); Console.WriteLine(frsIn / secIn); break; default: Console.Write("Wrong"); break; }
Ou vous pouvez utiliser un boîtier de switch
que je conseillerais lorsque vous souhaitez vérifier les variables constantes.
Exemple avec Switch Case:
if (signL == "*") { Console.Write("result is: "); Console.WriteLine(frsIn * secIn); } else if (signL == "+") { Console.Write("result is: "); Console.WriteLine(frsIn + secIn); } else if (signL == "/") { Console.Write("result is: "); Console.WriteLine(frsIn / secIn); } else if (signL == "-") { Console.Write("result is: "); Console.WriteLine(frsIn - secIn); } else if (signL == "%") { Console.Write("result is: "); Console.WriteLine(frsIn / secIn); } else { Console.Write("Wrong"); }
Pour tout sauf la première ligne, vous voulez else if
plutôt que if
. Encore mieux serait une déclaration de switch
.
Dans le code actuel, considérez si signL
est "/". Il échoue aux tests 1, 2 et 4 mais réussit 3.
Mais alors il échoue 5 ("%") et va donc dans la clause else
, et donne ainsi à la fois le résultat de la division et "faux".
Utiliser if else
donnerait:
switch (signL) { case "*": Console.Write("result is: "); Console.WriteLine(frsIn * secIn); break; case "+": Console.Write("result is: "); Console.WriteLine(frsIn + secIn); break; case "/": Console.Write("result is: "); Console.WriteLine(frsIn / secIn); break; case "-": Console.Write("result is: "); Console.WriteLine(frsIn - secIn); break; case "%": Console.Write("result is: "); Console.WriteLine(frsIn % secIn); break; default; Console.Write("Wrong"); break; }
Cependant, ceci est inefficace car avec, par exemple "%", il y aura eu cinq comparaisons - quatre échouent une passe.
Une select
ne nécessite que la comparaison (de la chaîne a, pour être précis):
if (signL == "*") { Console.Write("result is: "); Console.WriteLine(frsIn * secIn); } else if (signL == "+") { Console.Write("result is: "); Console.WriteLine(frsIn + secIn); } else if (signL == "/") { Console.Write("result is: "); Console.WriteLine(frsIn / secIn); } else if (signL == "-") { Console.Write("result is: "); Console.WriteLine(frsIn - secIn); } else if (signL == "%") { Console.Write("result is: "); Console.WriteLine(frsIn / secIn); } else { Console.Write("Wrong"); }
Pourquoi ne pas utiliser else if
? car si votre dernière condition if (signL == "%")
est incorrecte, elle redirige toujours vers l'instruction else
if (signL == "*") { Console.Write("result is: "); Console.WriteLine(frsIn * secIn); } else if (signL == "+") { Console.Write("result is: "); Console.WriteLine(frsIn + secIn); } else if (signL == "/") { Console.Write("result is: "); Console.WriteLine(frsIn / secIn); } else if (signL == "-") { Console.Write("result is: "); Console.WriteLine(frsIn - secIn); } else if (signL == "%") { Console.Write("result is: "); Console.WriteLine(frsIn / secIn); } else { Console.Write("Wrong"); }
Je n'ai pas compris votre question, mais c'est une mauvaise pratique d'utiliser plusieurs conditions if, vous auriez pu utiliser des instructions switch case
La question n'est certainement pas clairement écrite, et une instruction switch pourrait bien être une meilleure option - mais si je comprends bien la question, il vous suffit d'utiliser
else if
pour toutes les instructionsif
autres que la première - donc la structure estif / else if / else if / else if [...] / else
Vous devez utiliser
else if