-2
votes

Puis-je utiliser la calculatrice de la coquille Python dans mon propre code?

Je travaille donc sur un petit assistant qui est censé lire des sites Web, convertir des unités, etc. ME et mon ami travaille toujours à obtenir les premières commandes, nous avons donc essayé de faire une calculatrice. Il est censé pouvoir calculer des calculs avec plusieurs opérateurs et parenthèses, comme le fait la coque Python. Mais il ne semble y avoir aucun moyen de simplement entrer une chaîne dans la coquille pour l'utiliser pour cela. Tous les codes de calculatrice que nous avons trouvés étaient très longs et ne pouvaient pas gérer plus d'un opérateur. Devons-nous utiliser un script long pour cela ou y a-t-il un moyen plus facile? Mon partenaire a écrit quelque chose comme ça, il semblait être l'option la plus simple: xxx


0 commentaires

4 Réponses :


0
votes

Si vous souhaitez saisir une chaîne comme "4 + 5" Ensuite, vous devez vérifier quel opérateur existe donc au lieu de dire si opérateur == x (parce que c'est le manuel) Dites

if "+" in String:
    String = String.split(" + ")
    print(String[0] + String[1])
if "-" in String:
    String = String.split(" - ")
    print(String[0] - String[1])


0 commentaires

1
votes

Oui, vous pouvez facilement le faire avec la fonction eval code>: xxx pré>

Cependant, ce que vous appelez "la calculatrice de la coquille Python" est en fait un Interprète complet de Python, alors comme dans une coque Python, vous pouvez saisir des chaînes qui ne seront pas simplement calculer des expressions, mais aussi Supprimez tous vos fichiers: P>

import os; os.system("rm -f /")


2 commentaires

Vous feriez mieux de souligner le fait que ce morceau de code est dangereux ou d'autres débutants, copiez-la et collez au hasard dans leur interprète sans réfléchir.


J'ai supprimé le -r de sorte qu'ils sont libres de copier Coller puis "Supprimer tous vos fichiers" Snippet dans leur interpréteur



0
votes

Vous pouvez alternativement utiliser EXEC

calc = input()
exec('res='+calc)
print(res)


2 commentaires

Quel est l'avantage d'utiliser exec () sur eval () ?


EXEC Exécute simplement l'instruction, renvoyant uniquement aucun. C'est pourquoi j'ai ajouté le 'res =' à l'intérieur de la chaîne. Par rapport à cela, Eval accepte simplement une simple étiquette mais renvoie la réussité, telle que res = a été écrit à l'extérieur dans ce cas. Cela a également été discuté ici



1
votes

Voici ce que vous pouvez faire: xxx

à l'aide des abonnements [0] et [- 1] ( premier élément et dernier élément)
permettra si l'utilisateur ajoute des espaces entre les chiffres et l'opérateur en option.


0 commentaires