W dniu niedziela, 19 sierpnia 2012 19:31:30 UTC+2 użytkownik Dave Angel napisał: > On 08/19/2012 12:25 PM, crispy wrote: > > > <SNIP> > > > So I have guessed, that characters processed by .rjust() function, are > > placed in output, relative to previous ones - NOT to first, most to left > > placed, character. > > > > rjust() does not print to the console, it just produces a string. So if > > you want to know how it works, you need to either read about it, or > > experiment with it. > > > > Try help("".rjust) to see a simple description of it. (If you're > > not familiar with the interactive interpreter's help() function, you owe > > it to yourself to learn it). > > > > Playing with it: > > > > print "abcd".rjust(8, "-") produces ----abcd > > > > for i in range(5): print "a".rjust(i, "-") > > produces: > > > > a > > a > > -a > > --a > > ---a > > > > In each case, the number of characters produced is no larger than i. No > > consideration is made to other strings outside of the literal passed > > into the method. > > > > > > > Why it works like that? > > > > In your code, you have the rjust() method inside a loop, inside a join, > > inside a print. it makes a nice, impressive single line, but clearly > > you don't completely understand what the pieces are, nor how they work > > together. Since the join is combining (concatenating) strings that are > > each being produced by rjust(), it's the join() that's making this look > > "relative" to you. > > > > > > > What builtn-in function can format output, to make every character be > > placed as i need - relative to the first character, placed most to left > > side of screen. > > > > If you want to randomly place characters on the screen, you either want > > a curses-like package, or a gui. i suspect that's not at all what you want. > > > > if you want to randomly change characters in a pre-existing string, > > which will then be printed to the console, then I could suggest an > > approach (untested) > > > > res = [" "] * length > > for column in similarity: > > res[column] = "|" > > res = "".join(res) > > > > > > > > -- > > > > DaveA
Thanks, i've finally came to solution. Here it is -> http://codepad.org/Q70eGkO8 def pairwiseScore(seqA, seqB): score = 0 bars = [str(' ') for x in seqA] #create a list filled with number of spaces equal to length of seqA string. It could be also seqB, because both are meant to have same length length = len(seqA) similarity = [] for x in xrange(length): if seqA[x] == seqB[x]: #check if for every index 'x', corresponding character is same in both seqA and seqB strings if (x >= 1) and (seqA[x - 1] == seqB[x - 1]): #if 'x' is greater than or equal to 1 and characters under the previous index, were same in both seqA and seqB strings, do.. score += 3 similarity.append(x) else: score += 1 similarity.append(x) else: score -= 1 for x in similarity: bars[x] = '|' #for every index 'x' in 'bars' list, replace space with '|' (pipe/vertical bar) character return ''.join((seqA, '\n', ''.join(bars), '\n', seqB, '\n', 'Score: ', str(score))) print pairwiseScore("ATTCGT", "ATCTAT"), '\n', '\n', pairwiseScore("GATAAATCTGGTCT", "CATTCATCATGCAA"), '\n', '\n', pairwiseScore('AGCG', 'ATCG'), '\n', '\n', pairwiseScore('ATCG', 'ATCG') -- http://mail.python.org/mailman/listinfo/python-list