Ich wollte ein Programm mit umgekehrter polnischer Notation in Python erstellen (Bestimmung, ob eine Zeichenfolge in einen numerischen Wert konvertiert werden kann)

Einführung

Dies ist der Grund, warum ich diesen Artikel geschrieben habe, aber im Universitäts-Test

"Erstellen Sie ein Programm, das in umgekehrter polnischer Notation berechnet"

Für das Problem. Ich habe viel Zeit in einem Teil gebraucht, also habe ich es für mein eigenes Memo gemacht.

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:
  #Es war ein Ärger hier
    stk.append(int(i))

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

print(stk[0])

Eingabebeispiel.txt


1 2 * 3 +

1 2 3 4 - * 5 - +

Während des Tests konnte ich mir eine Methode nicht gut vorstellen, also konnte ich sie nicht nachschlagen. Ich steckte im obigen Kommentar fest.

Was konnte nicht getan werden

In umgekehrter polnischer Notation sind Operanden und Zahlen enthalten. Mit anderen Worten muss festgestellt werden, ob es sich um ein Zeichen oder einen Operanden handelt. In der obigen Funktion "isnum" muss bestimmt werden, ob das eingehende Zeichen eine int-Typ-Nummer oder ein Zeichentyp-Operand ist.

Ich konnte den Teil nicht implementieren, ob die Zeichenkette hier in eine Zahl umgewandelt werden kann, und ich konnte schließlich kein Programm schreiben.

Lösungen

Es scheint, dass alles mit isdigit () gelöst werden kann. Wenn Sie isdigit () verwenden, wird zurückgegeben, ob es in den Typ int konvertiert werden kann.

isdigittest.py


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

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

Ausgabe

out.txt


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

Es wird bestimmt, ob die Zeichenfolge in einen solchen Integer-Typ umgewandelt werden kann. Damit können Sie alles machen.

Wenn Sie dies tatsächlich verwenden und den obigen Code neu schreiben, sieht es so aus.

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])

Wechselpunkt

isnum.py


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

  else:
    return 0

Ich brauche diesen Teil überhaupt nicht. Wenn Sie isdigit () verwenden, benötigen Sie diese Funktion nicht. Immerhin wurde ich ein Einzeiler. Als ich das obige Programm ausführte, konnte ich die richtige Antwort erhalten.

Antworten.txt


5

-6

Recommended Posts

Ich wollte ein Programm mit umgekehrter polnischer Notation in Python erstellen (Bestimmung, ob eine Zeichenfolge in einen numerischen Wert konvertiert werden kann)
Python-Tricks: Eine Kombination aus enumerate () und zip (), bei der überprüft wird, ob eine Zeichenfolge in eine Zahl konvertiert werden kann, wobei die Zeichenfolge als Zahl sortiert wird
Stellen Sie sicher, dass Python eine Zeichenfolge in int konvertieren / konvertieren kann
Ich möchte mit Python ein Fenster erstellen
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Ich möchte eine Variable in einen Python-String einbetten
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
Erstellen Sie eine zufällige Zeichenfolge in Python
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Mayungos Python Learning Episode 6: Ich habe versucht, eine Zeichenkette in eine Zahl umzuwandeln
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
Ich wollte ABC159 mit Python lösen
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich wollte schnell einen Mailserver erstellen, der mit postfix + dovecot auf EC2 frei verwendet werden kann
[Anfänger] Was passiert, wenn ich ein Programm schreibe, das in Python auf PHP läuft?
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
Einbetten von Variablen in Python-Strings
So erstellen Sie eine JSON-Datei in Python
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe versucht, mit einem Foto einfach ein hochpräzises 3D-Bild zu erstellen [1]. (Die Tiefe kann jetzt in PNG bearbeitet werden.)
Ich habe versucht, automatisch die Zeichenfolge zu generieren, die mit Python in Mr. Adjustment eingegeben werden soll
Ein Mechanismus zum Aufrufen von Ruby-Methoden aus Python, der in 200 Zeilen ausgeführt werden kann
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ich möchte Timeout einfach in Python implementieren
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Erstellen Sie ein Plug-In, das Python Doctest auf Vim ausführt (2)
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Erstellen Sie ein Plug-In, um Python Doctest mit Vim (1) auszuführen.
Ich möchte mit einem Roboter in Python arbeiten.
Nur Arrays der Größe 1 können in Python-Skalare konvertiert werden
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Ich habe versucht, "ein Herz, auch wenn es getrennt ist" mithilfe eines genetischen Algorithmus in Python zu automatisieren
Eine Geschichte, die ich machen wollte, als ich eine Liste von Lernsitzungen mit Python bekam
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe schnell ein Programm geschrieben, um DI mit Python zu lernen
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Erstellen Sie eine Nachricht, die der Lokalisierung entspricht, mit einer Python-Übersetzungszeichenfolge
Ich möchte Python mit VS-Code ausführen können
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
[Python] Erstellen Sie ein Programm, das Zeilenumbrüche in der Zwischenablage löscht. + Als Verknüpfung mit Fenstern registrieren
[Python] Ein Programm, das die maximale Anzahl von Spielzeugen findet, die mit Ihrem Geld gekauft werden können
Erstellen Sie eine Funktion in Python