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
  doing string split with 2 or more split characters Skaperen 22 2,317 Aug-13-2023, 01:57 AM
Last Post: Skaperen
  How do I check if the first X characters of a string are numbers? FirstBornAlbratross 6 1,426 Apr-12-2023, 10:39 AM
Last Post: jefsummers
  Need help on how to include single quotes on data of variable string hani_hms 5 1,883 Jan-10-2023, 11:26 AM
Last Post: codinglearner
  python sql query single quote in a string mg24 1 993 Nov-18-2022, 08:01 PM
Last Post: deanhystad
  Why is copying and pasting a block now broken? WagmoreBarkless 2 1,328 May-05-2022, 05:01 AM
Last Post: WagmoreBarkless
  Why is copying and pasting a block now broken? WagmoreBarkless 1 1,197 May-04-2022, 11:40 PM
Last Post: Larz60+
Question [SOLVED] Delete specific characters from string lines EnfantNicolas 4 2,141 Oct-21-2021, 11:28 AM
Last Post: EnfantNicolas
  BrokenPipeError: [Errno 32] Broken pipe throwaway34 6 8,936 May-06-2021, 05:39 AM
Last Post: throwaway34
  Parse String between 2 Delimiters and add as single list items lastyle 5 3,279 Apr-11-2021, 11:03 PM
Last Post: lastyle
  Extract continuous numeric characters from a string in Python Robotguy 2 2,579 Jan-16-2021, 12:44 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