Website-Suche

Wie man ein Taschenrechnerprogramm in Python 3 erstellt


Einführung

Die Programmiersprache Python ist ein großartiges Werkzeug, wenn es darum geht, mit Zahlen zu arbeiten und mathematische Ausdrücke auszuwerten. Diese Eigenschaft kann genutzt werden, um nützliche Programme zu erstellen.

Dieses Tutorial präsentiert eine Lerneinheit, die beschreibt, wie man ein Kommandozeilen-Calculator-Programm in Python 3 erstellt. Dieser Rechner wird nur grundlegende arithmetische Operationen durchführen können, aber der letzte Schritt dieses Leitfadens dient als Ausgangspunkt dafür, wie Sie den Code verbessern könnten, um einen robusteren Rechner zu erstellen.

Wir werden mathematische Operatoren, Variablen, bedingte Anweisungen, Funktionen verwenden und Benutzereingaben verarbeiten, um unseren Taschenrechner zu erstellen.

Voraussetzungen

Für dieses Tutorial sollten Sie Python 3 auf Ihrem lokalen Computer installiert haben und eine Programmierumgebung auf dem Gerät eingerichtet haben. Wenn Sie Python installieren oder die Umgebung einrichten müssen, können Sie dies tun, indem Sie die entsprechende Anleitung für Ihr Betriebssystem befolgen.

Schritt 1 — Fordern Sie die Benutzer zur Eingabe auf

Rechner funktionieren am besten, wenn ein Mensch die Gleichungen eingibt, die der Computer lösen soll. Sie beginnen mit dem Schreiben Ihres Programms an dem Punkt, an dem der Mensch die Zahlen eingibt, mit denen der Computer arbeiten soll.

Zuerst erstellen Sie eine Datei für Ihr Programm. Für dieses Beispiel verwenden wir den Texteditor nano und nennen die Datei calculator.py:

  1. nano calculator.py

Als nächstes fügen Sie Inhalte zu dieser Datei hinzu, um Ihr Programm auszuführen. Für dieses Programm müssen Sie den Benutzer auffordern, zwei Zahlen einzugeben, also beauftragen Sie das Programm, den Benutzer nach zwei Zahlen zu fragen. Sie können dies tun, indem Sie die eingebaute input()-Funktion von Python verwenden, um benutzergenerierte Eingaben von der Tastatur zu akzeptieren. Innerhalb der Klammern der input()-Funktion können Sie einen String übergeben, um den Benutzer aufzufordern, und dann die Eingabe des Benutzers einer Variablen zuweisen. Denken Sie daran, dass es hilfreich sein kann, ein Leerzeichen am Ende Ihres Strings einzufügen, wenn Sie nach Eingaben fragen, damit ein Abstand zwischen der Eingabe des Benutzers und dem Aufforderungsstring besteht:

number_1 = input('Enter your first number: ')
number_2 = input('Enter your second number: ')

Nachdem Sie zwei Zeilen geschrieben haben, sollten Sie das Programm speichern, bevor Sie es ausführen. Wenn Sie nano verwenden, können Sie durch Drücken von CTRL + X, dann Y und ENTER beenden.

Führen Sie Ihr Programm mit dem folgenden Befehl aus:

  1. python calculator.py

Dies wird die Eingabeaufforderungen Ihres Programms beginnen und Sie können im Terminalfenster antworten:

Enter your first number: 5
Enter your second number: 7

Wenn Sie dieses Programm ein paar Mal ausführen und Ihre Eingaben variieren, werden Sie feststellen, dass Sie beim Auffordern alles eingeben können, was Sie möchten, einschließlich Wörter, Symbole, Leerzeichen oder die Eingabetaste. Das liegt daran, dass input() Daten als Zeichenfolgen entgegennimmt und nicht weiß, dass Sie nach Zahlen suchen.

Sie werden aus zwei Gründen Zahlen in diesem Programm verwenden wollen:

  1. um dem Programm zu ermöglichen, mathematische Berechnungen durchzuführen
  2. um zu überprüfen, ob die Eingabe des Benutzers eine numerische Zeichenfolge ist

Je nach den Anforderungen Ihres Rechners möchten Sie möglicherweise den von der input()-Funktion verwendeten String in eine Ganzzahl oder eine Fließkommazahl umwandeln. Für dieses Tutorial eignen sich ganze Zahlen für unseren Zweck, also wickeln Sie die input()-Funktion in die int()-Funktion ein, um die Eingabe in den Datentyp Ganzzahl zu konvertieren:

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

Jetzt, wenn Sie das Programm ausführen und zwei ganze Zahlen eingeben, werden Sie auf keinen Fehler stoßen:

Enter your first number: 23
Enter your second number: 674

Wenn Sie jedoch Buchstaben, Symbole oder andere Nicht-Ganzzahlen eingeben, erhalten Sie den folgenden Fehler:

Enter your first number: sammy
Traceback (most recent call last):
  File "testing.py", line 1, in <module>
    number_1 = int(input('Enter your first number: '))
ValueError: invalid literal for int() with base 10: 'sammy'

Bisher hast du zwei Variablen eingerichtet, um Benutzereingaben in Form von ganzzahligen Datentypen zu speichern. Du kannst auch damit experimentieren, die Eingabe in Fließkommazahlen zu konvertieren.

Schritt 2 — Operatoren hinzufügen

Bevor das Programm abgeschlossen ist, fügen Sie insgesamt vier mathematische Operatoren hinzu: + für Addition, - für Subtraktion, * für Multiplikation und / für Division.

Während Sie das Programm entwickeln, sollten Sie sicherstellen, dass jeder Teil korrekt funktioniert. Beginnen Sie also mit der Einrichtung der Addition. Sie werden die beiden Zahlen innerhalb einer Print-Funktion hinzufügen, damit die Person, die den Taschenrechner benutzt, den Inhalt sehen kann:

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

print(number_1 + number_2)

Führen Sie das Programm aus und geben Sie zwei Zahlen ein, wenn Sie dazu aufgefordert werden, um sicherzustellen, dass es wie erwartet funktioniert:

Enter your first number: 8
Enter your second number: 3
11

Die Ausgabe zeigt, dass das Programm richtig funktioniert. Fügen Sie jetzt etwas mehr Kontext hinzu, damit der Benutzer während der Laufzeit des Programms vollständig informiert ist. Verwenden Sie dazu String-Formatter, um den Text richtig zu formatieren und Feedback zu geben. Sie möchten, dass der Benutzer eine Bestätigung über die Zahlen erhält, die er eingibt, und den verwendeten Operator zusammen mit dem erzielten Ergebnis:

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)

Jetzt, wenn Sie das Programm ausführen, erhalten Sie zusätzliche Ausgaben, die es dem Benutzer ermöglichen, den mathematischen Ausdruck zu bestätigen, der vom Programm ausgeführt wird:

Enter your first number: 90
Enter your second number: 717
90 + 717 = 
807

Die Verwendung von String-Formatierern gibt den Nutzern mehr Rückmeldung.

An diesem Punkt können Sie die restlichen Operatoren mit dem gleichen Format wie bei der Addition zum Programm hinzufügen:

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

Addition
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)

Subtraction
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)

Multiplication
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)

Division
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)

Hier fügen Sie die verbleibenden Operatoren, -, * und /, in das obige Programm ein. Wenn Sie das Programm an diesem Punkt ausführen, führt das Programm alle oben genannten Operationen aus. Sie möchten jedoch das Programm auf eine Operation gleichzeitig beschränken. Dazu verwenden Sie bedingte Anweisungen.

Schritt 3 — Hinzufügen von Bedingten Anweisungen

Das Ziel des calculator.py Programms ist es, dass der Benutzer zwischen den verschiedenen Operatoren wählen kann. Beginnen Sie damit, einige Informationen oben im Programm hinzuzufügen, zusammen mit einer Auswahlmöglichkeit, damit die Person weiß, was zu tun ist.

Schreibe einen Text über mehrere Zeilen, indem du dreifache Anführungszeichen verwendest:

'''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
'''

Dieses Programm verwendet jedes der Operatorensymbole, damit die Benutzer ihre Wahl treffen können. Wenn der Benutzer eine Division durchführen möchte, gibt er / ein. Sie können jedoch beliebige Symbole wählen, wie 1 für Addition oder b für Subtraktion.

Weil Sie die Benutzer nach Eingaben fragen, möchten Sie die input()-Funktion verwenden. Setzen Sie den String in die input()-Funktion und übergeben Sie den Wert dieser Eingabe an eine Variable, die Sie operation nennen werden:

operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)

print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)

print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)

print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)

An diesem Punkt wird bei Ausführung des Programms nichts passieren, egal was Sie an der ersten Aufforderung eingeben. Um dies zu korrigieren, fügen Sie einige bedingte Anweisungen in das Programm ein. Aufgrund der Art und Weise, wie Sie das Programm strukturiert haben, wird die if Anweisung dort sein, wo die Addition durchgeführt wird, es wird 3 else-if oder elif Anweisungen für jede der anderen Operatoren geben, und die else Anweisung wird eingesetzt, um einen Fehler zu behandeln, falls der Benutzer kein Operatorsymbol eingegeben hat.

operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

if operation == '+':
    print('{} + {} = '.format(number_1, number_2))
    print(number_1 + number_2)

elif operation == '-':
    print('{} - {} = '.format(number_1, number_2))
    print(number_1 - number_2)

elif operation == '*':
    print('{} * {} = '.format(number_1, number_2))
    print(number_1 * number_2)

elif operation == '/':
    print('{} / {} = '.format(number_1, number_2))
    print(number_1 / number_2)

else:
    print('You have not typed a valid operator, please run the program again.')

Um durch dieses Programm zu navigieren, fordert es zunächst den Benutzer auf, ein Betriebssymbol einzugeben. Beispielsweise, wenn der Benutzer * eingibt, um zu multiplizieren. Als Nächstes fragt das Programm nach zwei Zahlen, und der Benutzer gibt 58 und 40 ein. An diesem Punkt zeigt das Programm die durchgeführte Gleichung und das Produkt an:

Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
* 
Please enter the first number: 58
Please enter the second number: 40
58 * 40 = 
2320

Aufgrund der Art und Weise, wie Sie das Programm strukturiert haben, erhält der Benutzer, wenn er beim ersten Prompt nach einer Operation % eingibt, erst nach der Eingabe von Zahlen Feedback, um es erneut zu versuchen. Sie sollten andere mögliche Optionen in Betracht ziehen, um mit verschiedenen Situationen umzugehen.

An diesem Punkt haben Sie ein voll funktionsfähiges Programm, aber Sie können keine zweite oder dritte Operation ausführen, ohne das Programm erneut zu starten. Der nächste Schritt besteht darin, einige Funktionen zu definieren, um diese Funktionalität dem Programm hinzuzufügen.

Schritt 4 — Funktionen definieren

Um die Möglichkeit zu handhaben, das Programm so oft auszuführen, wie der Benutzer möchte, werden Sie einige Funktionen definieren. Zuerst setzen Sie Ihren bestehenden Codeblock in eine Funktion. Benennen Sie die Funktion calculate() und fügen Sie innerhalb der Funktion eine zusätzliche Einrückungsebene hinzu. Um sicherzustellen, dass das Programm läuft, rufen Sie die Funktion auch am Ende der Datei auf:

Define our function
def calculate():
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')

    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))

    if operation == '+':
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)

    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)

    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)

    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)

    else:
        print('You have not typed a valid operator, please run the program again.')

Call calculate() outside of the function
calculate()

Erstellen Sie als nächstes eine zweite Funktion, die aus mehr bedingten Anweisungen besteht. In diesem Codeblock möchten Sie dem Benutzer die Wahl geben, ob er die Berechnung erneut durchführen möchte oder nicht. Sie können dies auf den bedingten Anweisungen des Rechners basieren, aber in diesem Fall haben Sie nur eine if, eine elif und eine else, um Fehler zu behandeln.

Nennen Sie diese Funktion again() und fügen Sie sie nach dem def calculate(): Codeblock hinzu:

... 
Define again() function to ask user if they want to use the calculator again
def again():

    # Take input from user
    calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')

    # If user types Y, run the calculate() function
    if calc_again == 'Y':
        calculate()

    # If user types N, say good-bye to the user and end the program
    elif calc_again == 'N':
        print('See you later.')

    # If user types another key, run the function again
    else:
        again()

Call calculate() outside of the function
calculate()

Obwohl es einige Fehlerbehandlungen mit der oben genannten else-Anweisung gibt, könnten Sie wahrscheinlich klarstellen, dass auch ein kleines y und n neben dem großen Y und N akzeptiert werden. Dazu fügen Sie die String-Funktion str.upper() hinzu:

...
def again():
    calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')

    # Accept 'y' or 'Y' by adding str.upper()
    if calc_again.upper() == 'Y':
        calculate()

    # Accept 'n' or 'N' by adding str.upper()
    elif calc_again.upper() == 'N':
        print('See you later.')

    else:
        again()
...

An diesem Punkt sollten Sie die again() Funktion am Ende der calculate() Funktion hinzufügen, damit der Code ausgelöst wird, der den Benutzer fragt, ob er fortfahren möchte oder nicht:

def calculate():
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')

    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))

    if operation == '+':
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)

    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)

    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)

    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)

    else:
        print('You have not typed a valid operator, please run the program again.')

    # Add again() function to calculate() function
    again()

def again():
    calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')

    if calc_again.upper() == 'Y':
        calculate()
    elif calc_again.upper() == 'N':
        print('See you later.')
    else:
        again()

calculate()

Sie können jetzt Ihr Programm mit python calculator.py in Ihrem Terminalfenster ausführen und so oft rechnen, wie Sie möchten.

Schritt 5 — Verbesserung des Codes

Jetzt haben Sie ein schönes, voll funktionsfähiges Programm. Es gibt jedoch noch viel mehr, was Sie tun können, um diesen Code zu verbessern. Sie können beispielsweise eine Willkommensfunktion hinzufügen, die die Benutzer am Anfang des Programmcodes begrüßt, so wie dies:

def welcome():
    print('''
Welcome to Calculator
''')
...
Don’t forget to call the function
welcome()
calculate()

Es gibt Möglichkeiten, mehr Fehlerbehandlung im gesamten Programm einzuführen. Zum Beispiel können Sie sicherstellen, dass das Programm weiterhin läuft, auch wenn der Benutzer plankton eingibt, wenn nach einer Zahl gefragt wird. So wie das Programm jetzt ist, erhält der Benutzer einen Fehler und das Programm wird gestoppt, wenn number_1 und number_2 keine ganzen Zahlen sind. Ebenso erhält der Benutzer in Fällen, in denen der Benutzer den Divisionsoperator (/) auswählt und 0 für die zweite Zahl (number_2) eingibt, einen ZeroDivisionError: division by zero Fehler. Daher möchten Sie vielleicht die Ausnahmebehandlung mit der try ... except Anweisung verwenden.

Diese Übung beschränkte Sie auf vier Operatoren, aber Sie können zusätzliche Operatoren hinzufügen, wie folgt:

...
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
** for power
% for modulo
''')
...
Don’t forget to add more conditional statements to solve for power and modulo

Zusätzlich möchten Sie möglicherweise einen Teil des Programms mit einer Schleifenanweisung umschreiben.

Es gibt viele Möglichkeiten, Fehler zu behandeln sowie jedes einzelne Coding-Projekt zu modifizieren und zu verbessern. Es ist wichtig, im Hinterkopf zu behalten, dass es keinen einzig richtigen Weg gibt, ein uns präsentes Problem zu lösen.

Schlussfolgerung

Dieses Tutorial hat einen möglichen Ansatz zur Erstellung eines Rechners über die Kommandozeile vorgestellt. Nach Abschluss dieses Tutorials werden Sie in der Lage sein, den Code zu modifizieren und zu verbessern und an anderen Projekten zu arbeiten, die Benutzereingaben über die Kommandozeile erfordern.

Wir sind daran interessiert, Ihre Lösungen zu diesem grundlegenden Kommandozeilen-Rechnerprojekt zu sehen! Bitte zögern Sie nicht, Ihre Rechnerprojekte in den Kommentaren zu posten.

Als nächstes möchten Sie möglicherweise ein textbasiertes Spiel wie Tic-Tac-Toe oder Schere-Stein-Papier erstellen.