Invoer verzamelen

Voltooid

Tot nu toe hebt u verschillende constructies van de Python-programmeertaal geleerd. U hebt ook een aantal programma's gemaakt. Programma's werken echter op gegevens en die gegevens komen ergens vandaan. In deze les bekijkt u hoe u invoer verzamelt van de opdrachtregel en van gebruikersinvoer.

Opdrachtregelinvoer

Wanneer u een programma start met behulp van python3, geeft u het de naam van het bestand om te starten. U kunt het ook een set argumenten geven: gegevens waartoe het programma toegang heeft wanneer het wordt uitgevoerd. Dit kan er als volgt uitzien:

python3 backup.py 2023-01-01

In de voorgaande code kan de tekenreeks 2023-01-01 worden gebruikt als instructie voor het programma backup.py om vanaf die datum een back-up te starten. Wat u krijgt door opdrachtregelargumenten te gebruiken, is flexibiliteit. Het programma kan zich anders gedragen, afhankelijk van de externe invoer.

Opdrachtregelargumenten

Hoe worden deze opdrachten vastgelegd aan de coderingszijde van dingen? Met behulp van de sys module kunt u de opdrachtregelargumenten ophalen en gebruiken in uw programma. Bekijk de volgende code:

import sys

print(sys.argv)
print(sys.argv[0]) # program name
print(sys.argv[1]) # first arg

sys.argv is een matrix of een gegevensstructuur die veel items bevat. De eerste positie, aangeduid als 0 in de matrix, bevat de programmanaam. De tweede positie, 1bevat uw eerste argument. Stel dat het programma backup.py de voorbeeldcode bevat en u deze als volgt uitvoert:

python3 backup.py 2023-01-01

Het programma levert vervolgens het volgende resultaat op:

['backup.py', '2023-01-01'] 
backup.py
2023-01-01

Gebruikersinvoer

Een andere manier om gegevens door te geven aan het programma is dat de gebruiker de gegevens invoert. U kunt deze code code geven zodat de gebruiker door het programma wordt geïnformeerd over het invoeren van gegevens. U slaat de ingevoerde gegevens op in het programma en handelt er vervolgens op.

Als u gegevens van de gebruiker wilt vastleggen, gebruikt u de input() functie. Hier volgt een voorbeeld:

print("Welcome to the greeter program")
name = input("Enter your name: ")
print("Greetings " + name)

Stel dat het programma input.py de voorbeeldcode bevat en u deze als volgt uitvoert:

python3 input.py

Als u het programma uitvoert, wordt u uitgenodigd om uw naam in te voeren, bijvoorbeeld:

Welcome to the greeter program
Enter your name: 

Nadat u een waarde hebt ingevoerd en op Enter drukt, wordt de begroeting geretourneerd:

Welcome to the greeter program
Enter your name: Picard
Greetings Picard

Werken met getallen

De input() functie slaat een resultaat op als een tekenreeks, dus de volgende code doet mogelijk niet wat u wilt:

print("calculator program")
first_number = input("first number: ")
second_number = input("second number: ")
print(first_number + second_number)

Als u dit programma uitvoert, wordt u uitgenodigd om het eerste nummer in te voeren, bijvoorbeeld 3:

calculator program
first number: 3

Nadat u op Enter hebt drukt, kunt u het tweede getal invoeren, bijvoorbeeld4:

calculator program
first number: 3
second number: 4

Als u op Enter drukt, krijgt u het volgende resultaat:

calculator program
first number: 3
second number: 4
34

Je was waarschijnlijk bedoeld voor dit programma om je te beantwoorden met 7 in plaats van 34. Wat is er misgegaan?

De uitleg is dat first_number en second_number tekenreeksen zijn. Als de berekening correct werkt, moet u deze tekenreeksen wijzigen in getallen met behulp van de int() functie. Door de laatste regel van het te gebruiken int()programma te wijzigen, kunt u het probleem oplossen:

print(int(first_number) + int(second_number))

Als u het programma opnieuw uitvoert met dezelfde waarden, wordt nu geretourneerd 7 als het antwoord:

calculator program
first number: 3
second number: 4
7