Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python

Zweck

Ursprüngliches Problem

--Basic Information Engineer Examination Herbst 2018 Nachmittag Frage 8

Das Programm, das ich geschrieben habe

practice.py


Expression = []

formula = input("Bitte geben Sie die Formel ein:")

for j in range(len(formula)):
    Expression.append(formula[j])

Value = []
Operator = []
Priority = []

def calculation():
    OpCnt = 0
    Value.append(0)
    nest = 0

    #Analyseteil
    for i in range(len(Expression)):
        chr = Expression[i]
        if chr >= '0' and chr <= '9':
            Value[OpCnt] = 10 * Value[OpCnt] + int(chr)

        if chr == '+' or chr == '-' or chr == '*' or chr == '/':
            Operator.append(chr)
            if chr == '+' or chr == '-':
                Priority.append(nest + 1)
            else:
                Priority.append(nest + 2)

            OpCnt = OpCnt + 1
            Value.append(0)

        if chr == '(':
            nest = nest + 10

        if chr == ')':
            nest = nest - 10

    #Berechnungsteil
    while OpCnt > 0:
        ip = 0
        i = 1
        while i < OpCnt:
            if Priority[ip] < Priority[i]:
                ip = i
            i = i + 1
        chr = Operator[ip]
        if chr == '+':
            Value[ip] = Value[ip] + Value[ip + 1]
        if chr == '-':
            Value[ip] = Value[ip] - Value[ip + 1]
        if chr == '*':
            Value[ip] = Value[ip] * Value[ip + 1]
        if chr == '/':
            Value[ip] = Value[ip] / Value[ip + 1]
        i = ip + 1
        while i < OpCnt:
            Value[i] = Value[i + 1]
            Operator[i - 1] = Operator[i]
            Priority[i - 1] = Priority[i]
            i = i + 1
        OpCnt = OpCnt - 1
    return Value[0]

Lassen Sie es uns zerlegen.

① Vorbereitung

1-1. Lassen Sie den Ausdruck eingeben und speichern Sie ihn als Zeichen in der Ausdrucksliste

practice.py



Expression = []

formula = input("Bitte geben Sie die Formel ein:")

for j in range(len(formula)):
    Expression.append(formula[j])

print(Expression)

Konsole


['2', '*', '(', '3', '4', '-', '(', '5', '+', '6', '7', ')', '/', '8', ')']
1-2. Bereiten Sie drei leere Listen vor

practice.py



Value = []
Operator = []
Priority = []

Schauen wir uns als nächstes den Funktionsteil an.

② Analyseverarbeitung und arithmetische Verarbeitung

practice.py


def calculation():
    OpCnt = 0
    Value.append(0)
    nest = 0

    #Analyseverarbeitungsteil
    for i in range(len(Expression)):
        chr = Expression[i]
        if chr >= '0' and chr <= '9':
            Value[OpCnt] = 10 * Value[OpCnt] + int(chr)

        if chr == '+' or chr == '-' or chr == '*' or chr == '/':
            Operator.append(chr)
            if chr == '+' or chr == '-':
                Priority.append(nest + 1)
            else:
                Priority.append(nest + 2)

            OpCnt = OpCnt + 1
            Value.append(0)

        if chr == '(':
            nest = nest + 10

        if chr == ')':
            nest = nest - 10

    #Berechnungsverarbeitungsteil
    while OpCnt > 0:
        ip = 0
        i = 1
        while i < OpCnt:
            if Priority[ip] < Priority[i]:
                ip = i
            i = i + 1
        chr = Operator[ip]
        if chr == '+':
            Value[ip] = Value[ip] + Value[ip + 1]
        if chr == '-':
            Value[ip] = Value[ip] - Value[ip + 1]
        if chr == '*':
            Value[ip] = Value[ip] * Value[ip + 1]
        if chr == '/':
            Value[ip] = Value[ip] / Value[ip + 1]
        i = ip + 1
        while i < OpCnt:
            Value[i] = Value[i + 1]
            Operator[i - 1] = Operator[i]
            Priority[i - 1] = Priority[i]
            i = i + 1
        OpCnt = OpCnt - 1
    return Value[0]
2-1. Analyseverarbeitungsteil

Value = [2, 34, 5, 67, 8]
Operator = ['*', '-', '+', '/']
Priority =[2, 11, 21, 12]

2-2. Arithmetischer Verarbeitungsteil

--Berechnen Sie die Reihenfolge anhand der Werte in der Prioritätsliste

Impressionen

――Es hat Spaß gemacht ^^

Recommended Posts

Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python
Versuchen Sie, das Python-Beispielproblem mit grundlegenden Informationen nur mit einem Browser auszuführen
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Das 15. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Schreiben Sie eine einfache Giermethode in Python
Lösen Sie das maximale Subarray-Problem in Python
Das 14. Referenzproblem beim Schreiben in Echtzeit in Python
Das 18. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
17. In Python implementiertes Referenzproblem für das Offline-Schreiben in Echtzeit
Der erste Schritt im Problem der Erfüllung von Einschränkungen in Python
Das 18. Offline-Echtzeit-Schreibproblem in Python
Tipps zum Schreiben werden in Python kurz abgeflacht
Das 19. Offline-Echtzeit-Schreibproblem in Python
Lösen Sie das Python-Rucksackproblem mit dem Greedy-Algorithmus
Grundlegende Sortierung in Python
Genetischer Algorithmus in Python
Schreiben Sie Python in MySQL
Algorithmus in Python (Bellman-Ford-Methode, Bellman-Ford)
Algorithmus in Python (Dijkstra)
[Basic Information Engineer Examination] Ich habe den Algorithmus der euklidischen Methode der gegenseitigen Teilung in Python geschrieben.
Zusammenfassung des grundlegenden Sortieralgorithmus von Python (Prüfung zum Basic Information Engineer)
Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Schreiben Sie in Python ein logarithmisches Histogramm auf die x-Achse
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
Schreiben Sie Pandec-Filter in Python
Mit Python erlerntes Refactoring (Basic)
Finde Fehler in Python
Schreiben Sie die Beta-Distribution in Python
Algorithmus in Python (Haupturteil)
Schreiben Sie Python in Rstudio (reticulate)
Reproduzieren Sie die euklidische Methode der gegenseitigen Teilung in Python
Algorithmus in Python (Dichotomie)
Implementieren Sie den Dijkstra-Algorithmus in Python
Zeichnen Sie geografische Informationen in Python
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Selective Sort)
Algorithmus in Python (Breitenprioritätssuche, bfs)
Schreiben Sie eine Dichotomie in Python
Abrufen der arXiv-API in Python
[Hinweis] Project Euler in Python (Problem 1-22)
[Python] Lösen des Importproblems aufgrund der unterschiedlichen Einstiegspunkte
Schreiben Sie ein JSON-Schema mit Python DSL
Sortieralgorithmus und Implementierung in Python
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python
Scraping mit Selen in Python (Basic)
Klicken Sie in Python auf die Sesami-API
Holen Sie sich den Desktop-Pfad in Python
Schreiben Sie einen HTTP / 2-Server in Python
Schreiben Sie die AWS Lambda-Funktion in Python
ABC166 in Python A ~ C Problem
Holen Sie sich den Skriptpfad in Python
[Python] Grundkenntnisse in AtCoder
Im Python-Befehl zeigt Python auf Python3.8
Lassen Sie uns mit Python 2 einen Investitionsalgorithmus entwickeln