Samla in indata

Slutförd

Hittills har du lärt dig olika konstruktioner av programmeringsspråket Python. Du har också skapat ett par program. Program fungerar dock på data, och dessa data kommer från någonstans. I den här lektionen tar du en närmare titt på hur du samlar in indata från kommandoraden och från användarindata.

Kommandoradsindata

När du startar ett program med hjälp python3av ger du det namnet på filen som ska startas. Du kan också ge den en uppsättning argument: data som programmet kommer att ha åtkomst till när de körs. Så här kan det se ut:

python3 backup.py 2023-01-01

I föregående kod kan strängen "2023-01-01" användas som instruktion till programmet backup.py att starta en säkerhetskopia från det datumet. Det du får med hjälp av kommandoradsargument är flexibilitet. Programmet kan bete sig annorlunda beroende på dess externa indata.

Kommandoradsargument

Hur fångas dessa kommandon in på kodningssidan av saker? Med hjälp av modulen sys kan du hämta kommandoradsargumenten och använda dem i programmet. Titta på följande kod:

import sys

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

sys.argv är en matris eller en datastruktur som innehåller många objekt. Den första positionen, som anges som 0 i matrisen, innehåller programnamnet. Den andra positionen, 1, innehåller ditt första argument. Anta att programmet backup.py innehåller exempelkoden och kör den så här:

python3 backup.py 2023-01-01

Programmet ger sedan följande resultat:

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

Användarindata

Ett annat sätt att skicka data till programmet är att låta användaren ange data. Du kan koda den så att programmet uppmanar användaren att ange information. Du sparar data i programmet och agerar sedan på dem.

Om du vill samla in information från användaren använder input() du funktionen. Här är ett exempel:

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

Anta att programmet input.py innehåller exempelkoden och kör den så här:

python3 input.py

När du kör programmet uppmanas du att ange ditt namn, till exempel:

Welcome to the greeter program
Enter your name: 

När du har angett ett värde och trycker på Retur returneras hälsningen:

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

Arbeta med tal

Funktionen input() lagrar ett resultat som en sträng, så följande kod kanske inte gör vad du vill:

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

När du kör det här programmet uppmanas du att ange det första numret, låt oss säga 3:

calculator program
first number: 3

När du har tryckt på Retur kan du ange det andra talet, låt oss säga 4:

calculator program
first number: 3
second number: 4

Om du trycker på Retur får du följande resultat:

calculator program
first number: 3
second number: 4
34

Du har förmodligen tänkt att det här programmet ska besvara dig med 7 i stället 34för . Så vad gick fel?

Förklaringen är att first_number och second_number är strängar. För att beräkningen ska fungera korrekt måste du ändra dessa strängar till tal med hjälp int() av funktionen . Genom att ändra den sista raden i programmet för att använda int()kan du lösa problemet:

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

Om du kör programmet igen med samma värden returneras 7 nu som svaret:

calculator program
first number: 3
second number: 4
7