Je voulais faire un programme de notation polonaise inversée en Python (détermination de savoir si une chaîne de caractères peut être convertie en valeur numérique)

introduction

C'est la raison pour laquelle j'ai écrit cet article, mais dans le test universitaire

"Créez un programme qui calcule en notation polonaise inversée"

Pour le problème. J'ai pris beaucoup de temps dans une partie, donc je l'ai fait pour mon propre mémo.

RPN.py


def isnum():
  if int(hoge) == True:
    return 1

  else:
    return 0

def cal(operand,a,b):
  if operand == "+":
    return int(a)+int(b)

  elif operand == "-":
    return int(a)-int(b)

  elif operand == "*":
    return int(a)*int(b)

por=[]
por = list(input().split())

stk=[]

for i in por:
  if isnum(i) == int:
  #C'était un problème ici
    stk.append(int(i))

  else:
    b=stk.pop()
    a=stk.pop()
    stk.append(cal(i,a,b))

print(stk[0])

Exemple d'entrée.txt


1 2 * 3 +

1 2 3 4 - * 5 - +

Pendant le test, je ne pouvais pas bien penser à une méthode, donc je ne pouvais pas la rechercher. J'étais coincé dans le commentaire ci-dessus.

Ce qui n'a pas pu être fait

En notation polonaise inversée, les opérandes et les nombres sont inclus. En d'autres termes, il est nécessaire de déterminer s'il s'agit d'un caractère ou d'un opérande. Dans la fonction ʻisnum` ci-dessus, il est nécessaire de déterminer si le caractère entrant est un nombre de type int ou un opérande de type caractère.

Je ne pouvais pas implémenter la partie de savoir si la chaîne de caractères pouvait être convertie en un nombre, et je ne pouvais pas écrire un programme après tout.

Solution

Il semble que tout peut être résolu en utilisant ʻisdigit () `. Si vous utilisez isdigit (), il retournera s'il peut être converti en type int.

isdigittest.py


word=["1","hato","1.0",""]

for w in word:
    print(w + " -> ",end="")
    print(w.isdigit())

production

out.txt


1 -> True
hato -> False
1.0 -> True
 -> False

Il déterminera si la chaîne de caractères peut être convertie en un type entier comme celui-ci. Vous pouvez tout faire avec ça.

Si vous utilisez réellement ceci et réécrivez le code ci-dessus, il ressemblera à ceci.

RPN2.py


def cal(operand,a,b):
  if operand == "+":
    return int(a)+int(b)

  elif operand == "-":
    return int(a)-int(b)

  elif operand == "*":
    return int(a)*int(b)

por=[]

por = list(input().split())

stk=[]

for i in por:
  if i.isdigit() == True:
    stk.append(int(i))

  else:
    b=stk.pop()
    a=stk.pop()
    stk.append(cal(i,a,b))

print(stk[0])

point de changement

isnum.py


def isnum():
  if int(hoge) == True:
    return 1

  else:
    return 0

Je n'ai pas besoin de cette partie en premier lieu. Si vous utilisez isdigit (), vous n'avez pas besoin de cette fonction. Après tout, je suis devenu un one-liner. Lorsque j'ai exécuté le programme ci-dessus, j'ai pu obtenir la bonne réponse.

Répondre.txt


5

-6

Recommended Posts

Je voulais faire un programme de notation polonaise inversée en Python (détermination de savoir si une chaîne de caractères peut être convertie en valeur numérique)
Astuces Python: Une combinaison de enumerate () et zip (), vérifiant si une chaîne peut être convertie en nombre, triant la chaîne sous forme de nombre
Assurez-vous que python peut convertir / convertir une chaîne de caractères en int
Je veux créer une fenêtre avec Python
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
Vérifiez si la chaîne est un nombre en python
Je souhaite intégrer une variable dans une chaîne Python
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Créer une chaîne aléatoire en Python
Vérifiez si vous pouvez vous connecter à un port TCP en Python
J'ai fait un programme de gestion de la paie en Python!
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
[Python] Un programme qui calcule le nombre de chaussettes jumelées
Mayungo's Python Learning Episode 6: J'ai essayé de convertir une chaîne de caractères en nombre
Je souhaite convertir une table convertie en PDF en Python en CSV
Je veux colorer une partie de la chaîne Excel avec Python
Je voulais résoudre ABC159 avec Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Je voulais créer rapidement un serveur de messagerie utilisable librement avec postfix + dovecot sur EC2
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
Le programme Python est lent! Je veux accélérer! Dans ce cas ...
J'ai essayé d'implémenter ce qui semble être un outil de snipper Windows avec Python
Comment incorporer des variables dans des chaînes python
Comment créer un fichier JSON en Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
J'ai créé un programme cryptographique César en Python.
J'ai essayé de créer facilement une image 3D de haute précision avec une seule photo [1]. (La profondeur peut maintenant être modifiée en PNG.)
J'ai essayé de générer automatiquement la chaîne de caractères à entrer dans M. Adjustment avec Python
Un mécanisme pour appeler des méthodes Ruby à partir de Python qui peut être fait en 200 lignes
Analyser une chaîne JSON écrite dans un fichier en Python
Comment convertir / restaurer une chaîne avec [] en python
Je veux facilement implémenter le délai d'expiration en python
[Python] Comment développer des variables dans une chaîne de caractères
Créer un plugin pour exécuter Python Doctest sur Vim (2)
J'ai essayé d'implémenter un pseudo pachislot en Python
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Je veux travailler avec un robot en python.
Seuls les tableaux de taille 1 peuvent être convertis en scalaires Python
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
J'ai essayé d'automatiser "un cœur même séparé" à l'aide d'un algorithme génétique en Python
Une histoire que je voulais faire quand j'ai eu une liste de sessions d'étude avec Python
J'ai essayé de créer une API list.csv avec Python à partir de swagger.yaml
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai écrit rapidement un programme pour étudier la DI avec Python ①
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai fait un chronomètre en utilisant tkinter avec python
Créer un message correspondant à la localisation avec la chaîne de traduction python
Je veux pouvoir exécuter Python avec VS Code
Je veux ajouter un joli complément à input () en python
[Python] Créez un programme qui supprime les sauts de ligne dans le presse-papiers + Enregistrez-vous comme raccourci avec Windows
[Python] Un programme qui trouve le nombre maximum de jouets pouvant être achetés avec votre argent
Créer une fonction en Python