Python Forum
String being broken up into single characters
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
String being broken up into single characters
#1
My program is here

When I run the program, I enter in a few colors, usually blue, green, yellow typed like that. When it gets to the end it prints out "Random color for band 1 is e" instead of something like "Random color for band 1 is Green" I created a new program here using just a little bit of the code from the two sections below and it seems to work fine but I can't find what is making it print just one letter instead of the whole word.

Lines 76-99
def askcolornames():
  explaincolors()
  print("First you will pick the colors you want to include in your blanket, max of 5 separated by commas.")

  Color_Names = input("Enter your color names\n\n")
  xxx = Color_Names.split(',')
  for i in range(len(xxx)):
    xxx[i] = xxx[i].rstrip()
    xxx[i] = xxx[i].lstrip()
    xxx[i] = xxx[i].capitalize()
  # delete the null elements (requires for or while loop)
  j = 0
  while len(xxx)>j:
    if []==xxx[j]:
      del xxx[j]
      continue
    j += 1
  if debug[0]:
    print("debug 0:", Color_Names, xxx)
  xxx.sort()
  Color_Names = xxx
  random.shuffle(Color_Names)
  return Color_Names[0]
Lines 122-145
def createpattern():
  ###Put your stuff here
  Camp = []
  currentband = 1
  for i in range(Total_Rows):
    if 0==i:
      #marking first row
      print(random.choice(Color_Names))
      currentcolor = (random.choice(Color_Names))
      if debug:
        print ("Random Color for Band",currentband," is ", currentcolor)
      currentbandstart = 0
      currentbandwidth = MinRows + random.randrange(MaxRowWidth)
      #set currentbandwidth so that the width never goes past
      #the end of the pattern and the following line is unnecessary
      currentbandend = min(MaxRows, currentbandstart + currentbandwidth)
      # first pick lastcolor = a color from all choices
      # mark bandstart = 0
      # mark bandend = min_rows + random integer from 0 to (maxrowwidth - 1)


      #rowtotal = Color_Names[random.randint(0, len(Color_Names) - 1)]
    
  return None
Reply
#2
I think the problem is that the contents of the Color_Names variable is inconsistent at different parts of the file. If Color_Names' value is the list ['Red', 'Green', 'Blue', 'Yellow'], then calling random.choice(Color_Names) returns one of these colors, such as 'Blue'. But at the end of askcolornames(), you return Color_Names[0], which would be 'Red' in our case. If Color_Names is the single word 'Red', the call random.choice(Color_Names) will return a random letter from the word 'Red'. This random letter could be 'e'. So you need to be consistent in the use of this variable, make sure that Color_Names is always a list of strings and not a single string.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  BrokenPipeError: [Errno 32] Broken pipe throwaway34 6 641 May-06-2021, 05:39 AM
Last Post: throwaway34
  Parse String between 2 Delimiters and add as single list items lastyle 5 593 Apr-11-2021, 11:03 PM
Last Post: lastyle
  Extract continuous numeric characters from a string in Python Robotguy 2 533 Jan-16-2021, 12:44 AM
Last Post: snippsat
  Python broken if moved to a different folder ecastrotns 3 516 Oct-26-2020, 10:53 PM
Last Post: ecastrotns
  Python win32api keybd_event: How do I input a string of characters? JaneTan 3 695 Oct-19-2020, 04:16 AM
Last Post: deanhystad
  Print characters in a single line rather than one at a time hhydration 1 584 Oct-10-2020, 10:00 PM
Last Post: bowlofred
  STT: recognition connection failed: [Errno 32] Broken pipe GrahamBerends 0 1,271 Jul-18-2020, 11:00 PM
Last Post: GrahamBerends
  How to get first two characters in a string scratchmyhead 2 687 May-19-2020, 11:00 AM
Last Post: scratchmyhead
  Remove escape characters / Unicode characters from string DreamingInsanity 5 3,039 May-15-2020, 01:37 PM
Last Post: snippsat
  Python DateTime is broken 10OctNotOct10a1 8 1,748 Jan-03-2020, 07:54 AM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020