1
finale_line=[]
print type(finale_line)#just checking#
lot_number=()
number_drawn=()
def load():  
    first=input("enter first lot: ")
    last=input("enter last lot: ")
    for lot_number in range(first,last):
        line_out=str(lot_number)            
        for count in range(1,5):
            number_drawn=raw_input("number: ")  
            line_out=line_out+number_drawn
        print line_out        #making sure it's a string at this point#
        finale_line.append(line_out)                
finale_line2=finale_line                        

load()


print finale_line  #again just checking#
print(" "*4),
for n in range(1,21):
    print n,          #this is to produce a line of numbers to compare to output#  
for a in finale_line:    
    print"\n",    
    print a[0]," ",    
    space_count=1
    for b in range(1,5):
        if int(a[b])<10:
            print(" "*(int(a[b])-space_count)),int(a[b]),
            space_count=int(a[b])
        else:                   
            print(" "*(a[b]-space_count)),a[b],
            space_count=a[b]+1

「?」を実際に表現していないことをお詫びします。これは私をジェパディに犠牲にしたでしょう。2: 最初の投稿が間違っていると思ったので、2 回投稿しました。そして 3: 投稿されたコードは古いバージョンでしたが、私が心配しているのは、私とは異なるエラー メッセージが表示されることです。このバージョンがあなたのマシンで同じ結果をもたらすかどうかはわかりません。これは python で進行中の問題です。

>>>
<type 'list'>
enter first lot: 1
enter last lot: 4
number: 2
number: 3
number: 4
number: 5
12345
number: 1
number: 2
number: 3
number: 4
21234
number: 3
number: 4
number: 5
number: 6
33456
['12345', '21234', '33456']
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
1     2   3   4   5 
2    1   2   3   4 
3      3   4   5   6
>>> 

スペースのロジックに問題があることは認識していますが、これは修正できると思います。理解できないのは、半分のスペースがどこから来ているのかです。または、まったく異なるアプローチが必要になる場合もあります。返信ありがとうございます。誰かの時間を無駄にしたくありませんが、とても感謝しています

4

1 に答える 1

2

「半分」のスペースが何を意味するのかわかりませんが、あなたを混乱させているのは、数字の間に表示されるべきではないと思われる「余分な」スペースだと思います。私は正しいですか?

その場合、それはprintステートメントの最後のコンマから来ています。出力後に改行を印刷しないようにするために使用していprintますが、コンマに到達したときに余分なスペースが印刷されていることに気付いていません。Python コマンド プロンプトでこれを試してください。

>>> def hello():
...     print "Hello",
...     print "world"
... 
>>> hello()
Hello world

「こんにちは」の後にスペースを入れなかったのですが、どこから来たのですか?答え: コンマです。

あなたの混乱は主に 2 つのことに起因しています: 1) 仕事に間違ったツールを使用していること、および 2) Python がどのように出力するかについての深い理解の欠如 (Python の初心者には理解できる)。

問題 1 は、sys.stdout.write()代わりに を使用することで解決できますprintimport sys(使用する前に必要になることに注意してください)。write()スペースや改行を追加しません。スペースと改行を自分で指定する必要があります。(念のため、改行は\nPython 文字列にあります)。したがって、出力はより予測可能になります。

問題 2 は、できるだけ早くhttp://docs.python.org/2/tutorial/inputoutput.htmlに取り組むことで解決できます。.rjust()やのような文字列メソッドの使用に注意して.format()ください。これらのメソッドに慣れると、それらを好きになるようになります。実際、このような強力な関数が利用できるのに、なぜこの種の文字列の書式設定を手動で行う必要があるのか​​、すぐに疑問に思うでしょう

これがお役に立てば幸いです。Python の学習をお楽しみください。

于 2013-06-30T06:11:15.233 に答える