Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python autocomplete user input [closed]

I have a list of teamnames. Let's say they are

teamnames=["Blackpool","Blackburn","Arsenal"]

In the program I ask the user which team he would like to do stuff with. I want python to autocomplete the user's input if it matches a team and print it.

So if the user writes "Bla" and presses enter, the team Blackburn should automatically be printed in that space and used in the rest of the code. So for example;

Your choice: Bla (User writes "Bla" and presses enter)

What it should look like

Your Choice: Blackburn (The program finishes the rest of the word)

like image 980
user3142412 Avatar asked Jan 07 '14 13:01

user3142412


People also ask

How do I turn on autocomplete in Python?

(In Python Shell window, you can use TAB key besides the key combination of 'CTRL' and 'space' to invoke the built-in auto-completion feature.) Alternatively, you can choose the "Show Completions" in the main Edit menu to achieve the same as well.

How do you add a prompt in python?

The simplest way to prompt for input in a Python script is to use the raw_input() function. At face value, it looks a lot like the print() function. You put a string between the parentheses and Python spits that out to the screen.


1 Answers

teamnames=["Blackpool","Blackburn","Arsenal"]

user_input = raw_input("Your choice: ")

# You have to handle the case where 2 or more teams starts with the same string.
# For example the user input is 'B'. So you have to select between "Blackpool" and
# "Blackburn"
filtered_teams = filter(lambda x: x.startswith(user_input), teamnames)

if len(filtered_teams) > 1:
    # Deal with more that one team.
    print('There are more than one team starting with "{0}"'.format(user_input))
    print('Select the team from choices: ')
    for index, name in enumerate(filtered_teams):
        print("{0}: {1}".format(index, name))

    index = input("Enter choice number: ")
    # You might want to handle IndexError exception here.
    print('Selected team: {0}'.format(filtered_teams[index]))

else:
    # Only one team found, so print that team.
    print filtered_teams[0]
like image 102
Raydel Miranda Avatar answered Sep 21 '22 04:09

Raydel Miranda