Zbieranie danych wejściowych

Ukończone

Do tej pory poznaliśmy różne konstrukcje języka programowania Python. Udało Ci się również utworzyć kilka programów. Jednak programy działają na danych, a dane pochodzą z jakiegoś miejsca. W tej lekcji przyjrzysz się bliżej sposobom zbierania danych wejściowych z wiersza polecenia i danych wejściowych użytkownika.

Dane wejściowe wiersza polecenia

Po uruchomieniu programu przy użyciu polecenia python3należy nadać mu nazwę pliku do uruchomienia. Można również nadać mu zestaw argumentów: dane, do których program będzie miał dostęp podczas uruchamiania. Oto jak to może wyglądać:

python3 backup.py 2023-01-01

W poprzednim kodzie ciąg "2023-01-01" może służyć jako instrukcja dla programu backup.py , aby uruchomić kopię zapasową od tej daty. Zyskasz przy użyciu argumentów wiersza polecenia, to elastyczność. Program może zachowywać się inaczej w zależności od danych wejściowych zewnętrznych.

Argumenty wiersza polecenia

W jaki sposób te polecenia są przechwytywane po stronie kodowania? Korzystając z modułu sys , możesz pobrać argumenty wiersza polecenia i użyć ich w programie. Spójrz na następujący kod:

import sys

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

sys.argv to tablica lub struktura danych zawierająca wiele elementów. Pierwsza pozycja, oznaczona jako 0 w tablicy, zawiera nazwę programu. Druga pozycja, 1, zawiera pierwszy argument. Załóżmy, że program backup.py zawiera przykładowy kod i uruchomisz go w następujący sposób:

python3 backup.py 2023-01-01

Następnie program daje następujący wynik:

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

Dane wejściowe użytkownika

Innym sposobem przekazywania danych do programu jest wprowadzenie danych przez użytkownika. Możesz go kodować, aby program nakazył użytkownikowi wprowadzenie informacji. Zapisujesz wprowadzone dane w programie, a następnie wykonujesz na nim działania.

Aby przechwycić informacje od użytkownika, użyjesz input() funkcji . Oto przykład:

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

Załóżmy, że program input.py zawiera przykładowy kod i uruchomisz go w następujący sposób:

python3 input.py

Uruchomienie programu zaprasza cię do wprowadzenia swojej nazwy, na przykład:

Welcome to the greeter program
Enter your name: 

Po wprowadzeniu wartości i naciśnięciu Enter zwracane jest powitanie:

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

Praca z liczbami

Funkcja input() przechowuje wynik jako ciąg, więc następujący kod może nie robić tego, co chcesz:

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

Uruchomienie tego programu powoduje zaproszenie do wprowadzenia pierwszej liczby, powiedzmy 3:

calculator program
first number: 3

Po naciśnięciu Enter możesz wprowadzić drugą liczbę, powiedzmy 4:

calculator program
first number: 3
second number: 4

Naciśnięcie Enter daje następujący wynik:

calculator program
first number: 3
second number: 4
34

Prawdopodobnie zamierzałeś odpowiedzieć 7 na ten program zamiast 34. Więc co poszło nie tak?

Wyjaśnieniem jest to, że first_number ciągi i second_number są ciągami. Aby obliczenia działały poprawnie, należy zmienić te ciągi na liczby przy użyciu int() funkcji . Modyfikując ostatni wiersz programu do użycia int()programu , możesz rozwiązać problem:

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

Ponowne uruchomienie programu z tymi samymi wartościami zwraca 7 teraz odpowiedź:

calculator program
first number: 3
second number: 4
7