Re: HELP PLEASE printing single characters!
On 12/02/2015 04:08 PM, John Strick wrote: On Wednesday, December 2, 2015 at 12:58:30 PM UTC-6, Dylan Riley wrote: hi all, I have been trying to figure out all day why my code is printing single characters from my list when i print random elements using random.choice the elements in the list are not single characters for example when i print, print(LIST[random.choice]) i get: ["e", "x", "a", "m", "p", "l", "e"] when i should get ["example"]. my code is: #Create a program that prints a list of words in random order. #The program should print all the words and not repeat any. import random LIST = ["blue ", "red ", "yellow ", "green ", "orange "] order = [] print("This game will print a random order of colours") print("The list is", LIST) input("press enter to start") while LIST != []: choice = random.choice(LIST) order += choice while choice in LIST: LIST.remove(choice) print(order) input("press enter to exit") thanks in advance guys You could just shuffle the list first, then loop through it. This will guarantee that each color is only used once. Not quite. Only if the original list has no repetitions. My personal approach would be to use a set to eliminate the duplicates, convert back to a list and shuffle that. no_reps = list(set(LIST)) random.shuffle(no_reps) print(no_reps) # Or use loop to print one-per-line -=- Larry -=- -- https://mail.python.org/mailman/listinfo/python-list
Re: HELP PLEASE printing single characters!
On Wed, Dec 2, 2015 at 1:44 PM, Dylan Rileywrote: > hi ian what would be the correct code to use in this situation then because > as far as i am aware the elements of my list should be printed as whole > elements and not just characters of the elements. order.append(choice) -- https://mail.python.org/mailman/listinfo/python-list
Re: HELP PLEASE printing single characters!
On Wed, Dec 2, 2015 at 12:58 PM, Dylan Rileywrote: > hi all, > I have been trying to figure out all day why my code is printing single > characters from my list when i print random elements using random.choice the > elements in the list are not single characters for example when i print, > print(LIST[random.choice]) i get: > ["e", "x", "a", "m", "p", "l", "e"] when i should get ["example"]. Remember that strings are iterable, and that iterating over strings results in individual characters. That should give you a clue as to what's going on. > my code is: > #Create a program that prints a list of words in random order. > #The program should print all the words and not repeat any. > > import random > > LIST = ["blue ", "red ", "yellow ", "green ", "orange "] > order = [] > > print("This game will print a random order of colours") > print("The list is", LIST) > input("press enter to start") > > > > while LIST != []: > choice = random.choice(LIST) > order += choice Addition on a list does concatenation, not appending. So this takes each element from choice and adds them individually to order. -- https://mail.python.org/mailman/listinfo/python-list
HELP PLEASE printing single characters!
hi all, I have been trying to figure out all day why my code is printing single characters from my list when i print random elements using random.choice the elements in the list are not single characters for example when i print, print(LIST[random.choice]) i get: ["e", "x", "a", "m", "p", "l", "e"] when i should get ["example"]. my code is: #Create a program that prints a list of words in random order. #The program should print all the words and not repeat any. import random LIST = ["blue ", "red ", "yellow ", "green ", "orange "] order = [] print("This game will print a random order of colours") print("The list is", LIST) input("press enter to start") while LIST != []: choice = random.choice(LIST) order += choice while choice in LIST: LIST.remove(choice) print(order) input("press enter to exit") thanks in advance guys -- https://mail.python.org/mailman/listinfo/python-list
Re: HELP PLEASE printing single characters!
On Wednesday, December 2, 2015 at 7:09:23 PM UTC, Ian wrote: > On Wed, Dec 2, 2015 at 12:58 PM, Dylan Rileywrote: > > hi all, > > I have been trying to figure out all day why my code is printing single > > characters from my list when i print random elements using random.choice > > the elements in the list are not single characters for example when i > > print, print(LIST[random.choice]) i get: > > ["e", "x", "a", "m", "p", "l", "e"] when i should get ["example"]. > > Remember that strings are iterable, and that iterating over strings > results in individual characters. That should give you a clue as to > what's going on. > > > my code is: > > #Create a program that prints a list of words in random order. > > #The program should print all the words and not repeat any. > > > > import random > > > > LIST = ["blue ", "red ", "yellow ", "green ", "orange "] > > order = [] > > > > print("This game will print a random order of colours") > > print("The list is", LIST) > > input("press enter to start") > > > > > > > > while LIST != []: > > choice = random.choice(LIST) > > order += choice > > Addition on a list does concatenation, not appending. So this takes > each element from choice and adds them individually to order. hi ian what would be the correct code to use in this situation then because as far as i am aware the elements of my list should be printed as whole elements and not just characters of the elements. -- https://mail.python.org/mailman/listinfo/python-list
Re: HELP PLEASE printing single characters!
On Wednesday, December 2, 2015 at 12:58:30 PM UTC-6, Dylan Riley wrote: > hi all, > I have been trying to figure out all day why my code is printing single > characters from my list when i print random elements using random.choice the > elements in the list are not single characters for example when i print, > print(LIST[random.choice]) i get: > ["e", "x", "a", "m", "p", "l", "e"] when i should get ["example"]. > > my code is: > #Create a program that prints a list of words in random order. > #The program should print all the words and not repeat any. > > import random > > LIST = ["blue ", "red ", "yellow ", "green ", "orange "] > order = [] > > print("This game will print a random order of colours") > print("The list is", LIST) > input("press enter to start") > > > > while LIST != []: > choice = random.choice(LIST) > order += choice > while choice in LIST: > LIST.remove(choice) > print(order) > > > > input("press enter to exit") > > thanks in advance guys You could just shuffle the list first, then loop through it. This will guarantee that each color is only used once. import random LIST = ["blue ", "red ", "yellow ", "green ", "orange "] random.shuffle(LIST) for color in LIST: print(color) # or add to order or whatever you need to -- https://mail.python.org/mailman/listinfo/python-list