Zoeken op website

Gebruikersinvoer ontvangen in Python: een beginnershandleiding


Introductie

Het ontvangen van gebruikersinvoer is van fundamenteel belang bij het programmeren van Python, waardoor ontwikkelaars interactieve applicaties kunnen bouwen. Of u nu werkt aan opdrachtregelscripts, GUI-gebaseerde toepassingen of webtoepassingen, het correct omgaan met gebruikersinvoer zorgt voor efficiënte en veilige software.

In deze tutorial leert u verschillende manieren om gebruikersinvoer in Python te ontvangen, waaronder de input() functie, command-line argumenten, GUI-gebaseerde invoerverwerking en best practices voor validatie en foutafhandeling.

1. De input() functie gebruiken

De eenvoudigste manier om gebruikersinvoer te ontvangen is via de ingebouwde input()-functie van Python. Het leest een snaar van het toetsenbord en geeft deze terug.

Voorbeeld:

name = input("Enter your name: ")
print("Hello, " + name + "!")

Invoer van gehele getallen gebruiken

Aangezien input() een string retourneert, moet u deze indien nodig converteren naar een geheel getal:

age = int(input("Enter your age: "))
print("You are", age, "years old.")

Omgaan met float-invoer

Wanneer u te maken hebt met numerieke invoer die decimale precisie vereist, zoals prijzen of metingen, moet u de invoer van de gebruiker converteren naar een drijvende-kommagetal. Dit wordt bereikt met behulp van de float() functie, die een string omzet in een drijvende-kommagetal.

Hier is een voorbeeld van hoe u float-invoer in Python kunt verwerken:

price = float(input("Enter the price: "))
print("The price is", price)

Gebruikersinvoer valideren

Bij het omgaan met gebruikersinvoer is het essentieel om mogelijke fouten aan te pakken die kunnen optreden wanneer gebruikers ongeldige gegevens invoeren. Een effectieve manier om dit te doen is door try-except blokken te gebruiken. Met deze aanpak kunt u uitzonderingen opsporen en beheren die tijdens het invoerproces naar voren kunnen komen, zodat uw programma robuust en gebruiksvriendelijk blijft.

while True:
    try:
        number = int(input("Enter an integer: "))
        break
    except ValueError:
        print("Invalid input! Please enter a valid integer.")

Voor meer informatie over het omgaan met verschillende gegevenstypen, bekijk onze tutorial over Python-gegevenstypen.

2. Omgaan met meerdere gebruikersinvoer

Wanneer u met gebruikersinvoer werkt, is het gebruikelijk om meerdere waarden van de gebruiker te vereisen. Python biedt een handige manier om dit aan te pakken met behulp van de split()-methode, die een tekenreeks verdeelt in een lijst met subtekenreeksen op basis van een gespecificeerd scheidingsteken. In het geval van gebruikersinvoer kunnen we split() gebruiken om meerdere waarden die door de gebruiker zijn ingevoerd, te scheiden.

Hier volgt een voorbeeld van hoe u split() kunt gebruiken om twee string-invoer van de gebruiker te ontvangen:

x, y = input("Enter two numbers separated by space: ").split()
print("First number:", x)
print("Second number:", y)

Als u echter numerieke bewerkingen op deze invoer moet uitvoeren, moet u ze converteren naar numerieke typen. Dit kan worden bereikt met behulp van de functie map(), die een bepaalde functie toepast op elk item van een iterable (in dit geval de lijst met tekenreeksen die worden geretourneerd door split()). Ga als volgt te werk om het vorige voorbeeld aan te passen om de invoer om te zetten in gehele getallen:

x, y = map(int, input("Enter two numbers: ").split())
print("Sum:", x + y)

Door map() te gebruiken om de invoer naar gehele getallen te converteren, kunt u er indien nodig rekenkundige bewerkingen op uitvoeren.

3. Invoer lezen van opdrachtregelargumenten

Bij het uitvoeren van een Python-script vanaf de opdrachtregel is het vaak nodig om aanvullende informatie of parameters aan het script door te geven. Dit wordt bereikt door middel van command-line argumenten, dit zijn waarden die na de scriptnaam worden opgegeven wanneer het script wordt uitgevoerd. Met de sys.argv-methode van Python heb je toegang tot deze argumenten in je script.

Hier volgt een voorbeeld van hoe u sys.argv kunt gebruiken om opdrachtregelargumenten te lezen:

Sla het volgende script op als script.py:

import sys
sys.argv is a list that contains the script name and all arguments passed to it
print("Script name:", sys.argv[0])  # sys.argv[0] is the script name itself
Check if any arguments were passed
if len(sys.argv) > 1:
    print("Arguments:", sys.argv[1:])  # sys.argv[1:] contains all arguments except the script name

Als u het script met argumenten wilt uitvoeren, gebruikt u de volgende opdracht in de terminal of opdrachtprompt:

python script.py Hello World

In dit voorbeeld zijn Hallo en Wereld de argumenten die aan het script worden doorgegeven. Het script voert de scriptnaam en de opgegeven argumenten uit.

Inzicht in het werken met opdrachtregelargumenten is essentieel voor het maken van scripts die eenvoudig kunnen worden aangepast of geconfigureerd zonder het script zelf te wijzigen. Deze aanpak is met name handig voor scripts die verschillende taken moeten uitvoeren op basis van gebruikersinvoer of configuratie.

4. Input ontvangen in GUI-applicaties

Bij het bouwen van grafische gebruikersinterface (GUI)-applicaties biedt Python een reeks bibliotheken om interactieve invoerverwerking te vergemakkelijken. Een van de meest populaire en gebruiksvriendelijke GUI-frameworks is Tkinter, dat is opgenomen in de Python-standaardbibliotheek. Met Tkinter kunt u eenvoudige GUI-applicaties maken met een minimale hoeveelheid code.

Hier volgt een voorbeeld van hoe u Tkinter kunt gebruiken om gebruikersinvoer te ontvangen in een GUI-toepassing:

import tkinter as tk

def get_input():
    # Retrieve the text entered by the user in the Entry field
    user_input = entry.get()
    # Update the Label to display the user's input
    label.config(text=f"You entered: {user_input}")
Create the main window of the application
root = tk.Tk()Create an Entry field for user input
entry = tk.Entry(root)
entry.pack()  # Add the Entry field to the windowCreate a Button to trigger the get_input function
btn = tk.Button(root, text="Submit", command=get_input)
btn.pack()  # Add the Button to the windowCreate a Label to display the user's input
label = tk.Label(root, text="")
label.pack()  # Add the Label to the windowStart the Tkinter event loop
root.mainloop()

In dit voorbeeld wordt gedemonstreerd hoe u een eenvoudige GUI-toepassing maakt die de gebruiker om invoer vraagt, die invoer verwerkt en deze teruggeeft aan de gebruiker.

Best practices voor het omgaan met gebruikersinvoer

Wanneer u werkt met gebruikersinvoer in Python, is het essentieel om best practices te volgen om ervoor te zorgen dat uw applicatie robuust, veilig en gebruiksvriendelijk is. Gebruikersinvoer kan verschillende vormen aannemen, zoals opdrachtregelargumenten, invoer uit bestanden of interactieve invoer van gebruikers. Hier zijn vijf belangrijke richtlijnen om in gedachten te houden, samen met voorbeeldcode om elk punt te illustreren:

1. Invoer valideren

Het valideren van gebruikersinvoer is cruciaal om fouten te voorkomen en ervoor te zorgen dat de ontvangen gegevens in het verwachte formaat zijn. Dit kan worden bereikt met behulp van try-except blokken om uitzonderingen op te vangen en te verwerken die kunnen optreden tijdens de invoerverwerking. Wanneer u de gebruiker bijvoorbeeld vraagt een geheel getal in te voeren, kunt u een try-except blok gebruiken om gevallen af te handelen waarin de gebruiker een niet-gehele waarde invoert.

# This code block is designed to repeatedly prompt the user for an integer input until a valid integer is entered.
while True:  # This loop will continue indefinitely until a break statement is encountered.
    try:
        # The input() function is used to get user input, which is then passed to int() to convert it to an integer.
        # If the input cannot be converted to an integer (e.g., if the user enters a string or a float), a ValueError is raised.
        num = int(input("Enter an integer: "))
        # If the input is successfully converted to an integer, the loop is exited using the break statement.
        break
    except ValueError:
        # If a ValueError is raised, it means the input cannot be converted to an integer.
        # In this case, an error message is printed to the user, prompting them to enter a valid integer.
        print("Invalid input! Please enter a valid integer.")
After the loop is exited, the program prints out the valid integer entered by the user.
print("You entered:", num)

2. Ga gracieus om met fouten

Het implementeren van mechanismen voor foutafhandeling is van vitaal belang om crashes van applicaties te voorkomen en een betere gebruikerservaring te bieden. Try-Except blokken kunnen worden gebruikt om fouten op te sporen en af te handelen op een manier die de stroom van de applicatie niet verstoort. Wanneer u bijvoorbeeld uit een bestand leest, kunt u een try-except blok gebruiken om gevallen af te handelen waarin het bestand niet bestaat of niet kan worden gelezen.

# Try to open the file "example.txt" in read mode
try:
    with open("example.txt", "r") as file:
        # Read the content of the file
        content = file.read()
        # Print the content of the file
        print("File content:", content)Handle the case where the file is not found
except FileNotFoundError:
    print("File not found!")Handle any other exceptions that may occur
except Exception as e:
    print("An error occurred:", str(e))

3. Beperk de invoerlengte

Door de duur van de gebruikersinvoer te beperken, kunt u onverwacht gedrag voorkomen, zoals bufferoverloopaanvallen of overmatig geheugengebruik. Dit kan worden bereikt door string slicing of andere methoden te gebruiken om invoerstrings boven een bepaalde lengte af te kappen. Wanneer u de gebruiker bijvoorbeeld vraagt een gebruikersnaam in te voeren, kunt u de invoerlengte beperken tot 20 tekens.

# This code block prompts the user to enter a username, with a maximum length of 20 characters.
username = input("Please enter your username (maximum 20 characters): ")If the length of the username is greater than 20, it is truncated to 20 characters.
if len(username) > 20:
    username = username[:20]
    print("Your username has been truncated to 20 characters.")The program then prints the username entered by the user.
print("Your username is:", username)

4. Invoer opschonen

Het opschonen van gebruikersinvoer is van cruciaal belang om beveiligingsrisico's te voorkomen, zoals SQL-injectie of cross-site scripting (XSS). Dit omvat het verwijderen of ontsnappen van speciale tekens die kwaadwillig kunnen worden gebruikt. De html-module van Python biedt een handige manier om HTML-tekens te ontsnappen in gebruikersinvoer. Wanneer u bijvoorbeeld gebruikersinvoer op een webpagina weergeeft, kunt u html.escape() gebruiken om XSS-aanvallen te voorkomen.

# This code block imports the 'html' module to use its 'escape' function for sanitizing user input.
import html
It then prompts the user to enter a string using the 'input' function.
user_input = html.escape(input("Enter a string: "))
The 'html.escape' function is used to escape any HTML characters in the user's input to prevent XSS attacks.This ensures that any special characters in the input are replaced with their HTML entity equivalents, making the input safe to display in a web page.
Finally, the sanitized user input is printed to the console.
print("Sanitized input:", user_input)

5. Gebruik standaardwaarden

Het opgeven van standaardwaarden voor gebruikersinvoer kan de bruikbaarheid aanzienlijk verbeteren door de hoeveelheid informatie die gebruikers moeten verstrekken te verminderen. Dit kan worden bereikt met behulp van de operator or om een standaardwaarde toe te wijzen als de gebruikersinvoer leeg of ongeldig is. Wanneer u de gebruiker bijvoorbeeld vraagt om zijn naam in te voeren, kunt u de standaardwaarde 'Gast' opgeven als de gebruiker geen naam invoert.

# This code block prompts the user to enter their name and then prints a greeting message.The input function is used to get user input, and the or "Guest" part ensures that if the user doesn't enter anything, the default name "Guest" is used.
name = input("Enter your name: ") or "Guest"The f-string is used to format the greeting message with the user's name.
print(f"Hello, {name}!")

Door deze best practices te volgen, kunt u ervoor zorgen dat uw Python-applicatie gebruikersinvoer op een veilige, efficiënte en gebruiksvriendelijke manier verwerkt.

Veelgestelde vragen

1. Hoe ontvang ik gebruikersinvoer in Python?

Het ontvangen van gebruikersinvoer is een fundamenteel aspect van elk interactief programma. In Python kunt u de ingebouwde input() functie gebruiken om de gebruiker om invoer te vragen en zijn antwoord op te slaan in een variabele. Hier is een eenvoudig voorbeeld:

user_input = input("Enter something: ")
print("You entered:", user_input)

2. Hoe krijg ik invoer van gehele getallen van een gebruiker in Python?

Als u invoer van gehele getallen van een gebruiker in Python wilt krijgen, kunt u een while-lus gebruiken om de gebruiker herhaaldelijk om invoer te vragen totdat een geldig geheel getal is ingevoerd. Hier is een voorbeeld van een codeblok dat dit aantoont:

# This code block repeatedly prompts the user to enter an integer until a valid integer is entered.
while True:  # This loop will continue to run indefinitely until a valid integer is entered.
    user_input = input("Enter an integer: ")  # This line prompts the user to enter an integer and stores the input in the 'user_input' variable.
    if user_input.isdigit():  # This condition checks if the user's input consists only of digits, indicating a valid integer.
        num = int(user_input)  # If the input is a valid integer, it is converted to an integer and stored in the 'num' variable.
        print("You entered:", num)  # This line prints a message to the console indicating the valid integer entered by the user.
        break  # This line breaks out of the loop, ending the program.
    else:
        print("Invalid input! Please enter a valid integer.")  # If the input is not a valid integer, this message is printed to the console, prompting the user to enter a valid integer.

Dit codeblok zorgt ervoor dat het programma de gebruiker blijft vragen om invoer totdat een geldig geheel getal is ingevoerd, waardoor het een robuuste manier is om gebruikersinvoer in Python af te handelen.

3. Kan ik meerdere gebruikersinvoer tegelijk ontvangen in Python?

Ja, u kunt meerdere gebruikersinvoer tegelijk ontvangen in Python. Een manier om dit te doen is door de split()-methode te gebruiken om de invoertekenreeks in meerdere delen te verdelen op basis van een opgegeven scheidingsteken, zoals een spatie. De functie map() kan vervolgens worden gebruikt om elk onderdeel om te zetten in het gewenste gegevenstype, zoals een geheel getal.

Hier is een voorbeeld van een codeblok dat laat zien hoe u twee gehele getallen tegelijk van de gebruiker kunt ontvangen:

x, y = map(int, input("Enter two numbers separated by space: ").split())
print("First number:", x)
print("Second number:", y)

4. Hoe kan ik omgaan met command-line argumenten in plaats van input()?

Wanneer u een Python-script uitvoert vanaf de opdrachtregel, kunt u argumenten doorgeven aan het script. Deze argumenten worden opgeslagen in de sys.argv lijst. Het eerste element van deze lijst, sys.argv[0], is de scriptnaam zelf. De rest van de elementen zijn de argumenten die aan het script worden doorgegeven.

Hier volgt een voorbeeld van hoe u kunt omgaan met opdrachtregelargumenten in uw Python-script:

import sys
Check if any command-line arguments were provided
if len(sys.argv) > 1:
    # Print the arguments received
    print("Command-line arguments received:", sys.argv[1:])
else:
    # Inform the user if no arguments were provided
    print("No command-line arguments provided.")

In dit voorbeeld controleert het script of er argumenten zijn opgegeven door de lengte van sys.argv te controleren. Als er meer dan één element in sys.argv is (d.w.z. dat er ten minste één argument is opgegeven), worden de ontvangen argumenten afgedrukt. Als dit niet het geval is, wordt de gebruiker geïnformeerd dat er geen argumenten zijn gegeven.

Deze aanpak is met name handig wanneer u uw script flexibeler wilt maken en gebruikers in staat wilt stellen het gedrag van het script aan te passen door argumenten door te geven vanaf de opdrachtregel.

5. Hoe neem je input in Python op?

In Python kunt u invoer van de gebruiker ontvangen met behulp van de input() functie. Deze functie retourneert een tekenreeks, die kan worden opgeslagen in een variabele voor verdere verwerking. Hier is een voorbeeld:

user_input = input("Please enter your name: ")
print("Hello, " + user_input + "!")

Deze code vraagt de gebruiker om zijn naam in te voeren en drukt vervolgens een begroetingsbericht af met zijn naam.

6. Hoe haal je input uit een variabele in Python?

In Python kun je niet rechtstreeks input van een variabele nemen. Variabelen worden gebruikt om waarden op te slaan, niet om input te ontvangen. U kunt echter een variabele gebruiken om de invoer van de gebruiker op te slaan met behulp van de input() functie. Bijvoorbeeld:

name = input("Please enter your name: ")
print("Hello, " + name + "!")

In dit voorbeeld slaat de naamvariabele de invoer op die van de gebruiker is ontvangen en wordt deze vervolgens gebruikt om een begroetingsbericht af te drukken.

7. Hoe voer ik een getal in Python in?

Om een getal in Python in te voeren, kunt u de functie input() gebruiken en de invoerreeks converteren naar een geheel getal of float met behulp van respectievelijk de functie int() of float(). Hier is een voorbeeld:

age = int(input("Please enter your age: "))
print("You are " + str(age) + " years old.")

Deze code vraagt de gebruiker om zijn leeftijd in te voeren, converteert de invoer naar een geheel getal en drukt vervolgens een bericht af met zijn leeftijd.

Conclusie

Deze tutorial behandelde meerdere manieren om gebruikersinvoer in Python te ontvangen, van eenvoudige terminalinvoer tot opdrachtregelargumenten en GUI-gebaseerde interacties. Door invoervalidatie en foutafhandeling te implementeren, kunt u robuuste en gebruiksvriendelijke Python-applicaties maken.

Kijk voor meer Python-tutorials op:

  1. Python-gegevenstypen

  2. Python leest, schrijft en kopieert bestanden

  3. Python Type Functie