愚問をてってれーするの楽しすぎるでしょβ

ESRのエッセイに唆されてPythonする初心者が半端な勉強ログを書き散らす場所 ICT文化にどうしても住みたいという遠大な啓示が下った人の住処/気持ちよさのためだけに/お客様のお忘れになった恥の概念が母胎に届いているようです

変数の置き方、global変数、終端文字"\n"など

#UTF-8

#Part5

#iはinteger(整数)の頭文字
#init()は、initial(初めの)の略

def init():
    for i in range(height):
        row=
        for j in range(width):
            row.append(dead)
    field.append(row)

def show():
    for i in range(height):
        for j in range(width):
            if field[i][j]==dead:
                print("", end=" ")
            else:
                print("##", end=" ")
        print()#何も引数を持たないprint関数で改行を表現できるらしい

dead=0
alive=1

height=5
width=5

field=

init()
show()

 

 

#テストツー。ちょっといじってみた

def init():
    for i in range(height):
        row=[ ]

        for j in range(width):
            row.append(dead)
        field.append(row)

def show():
    for i in range(height):
        for j in range(width):
            if field[i][j]==dead:
                print("[ ]", end=" ")
            else:
                print("##", end=" ")
        print(" ")#改行を表す終端文字がこれだった気がしたからやったら以下のようになった

dead=0
alive=1

height=5
width=5

field=[ ]

init()
show()

#[ ] [ ] [ ] [ ] [ ]
#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

 

#最初文字の方にしなかったらうまくいかなかった。

 

#念のためテストスリー
def init():
    for i in range(height):
    row=[ ]
        for j in range(width):
            row.append(dead)
    field.append(row)

def show():
    for i in range(height):
        for j in range(width):
            if field[i][j]==dead:
                print("[ ]", end=" ")
            else:
                print("##", end=" ")
        print(" "+" ")

dead=0
alive=1

height=5
width=5

field=[ ]

init()
show()

 

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

 

#こうなった。結論として、print()自体に必ず" "が1つ含まれていて、print()内で繰り返すごとに改行をする。使いようもありそう。

 

#変数を全部global変数にしてみた。
def init():
    for i in range(height):
        for j in range(width):
            row.append(dead)
        field.append(row)

def show():
    for i in range(height):
        for j in range(width):
            if field[i][j]==dead:
                print("", end=" ")
            else:
                print("##", end=" ")
       print()

dead=0
alive=1

height=5
width=5

field=[ ]
row=[ ]

init()
show()

 

#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]

 

#当然普通に出たけど、global変数は少ない方がいいという話も。インタープリタ言語が関数の外を全部走査することを考えると、確かに遅くなりそう。

 

#じゃあなるべくprivate変数を使って作る
#とトライしてたら変数iにこだわり始めた
alive=1
dead=0

height=5
width=5

def init():
    field=[ ]
    for i in range(height): #ここのiがこの行以前に宣言されていないのが気持ち悪いけど、for文自体が宣言として作用するらしい
        row=[ ]
        for j in range(width):
            row.append(dead)
        field.append(row)
    return field

#と、いうことは、iは、この関数のprivate関数のひとつだと言う事ができる
#シーケンスを代入するための変数が必要だから、こういう表現になる

def show():
    for i in range(height):
        for j in range(width):
            if field[i][j]==alive:
                print("##", end=" ")
            else:
                print("[ ]", end=" ")
    print()

#iはfieldリストの中身の番号で、jはrowリストの中身の番号。
#それぞれの関数内でprivate変数として使われているけど、頭の中では多分同じ扱いになってる。
#慣れだと信じてる

init()
show()

 


#for文からiを抜いてみる
#for文に関してはこれ以外の形では使えない模様(‼)

 

#forの代わりに別の条件文を書いてみる
def init():
    field=[ ]
    while i<height:
        row=[ ]
        while j<width:
            row.append(dead)
        field.append(row)
    return field

init()
show()


#ここまで作ったら、以下のような地獄が返ってきてよく分からないからこの件はここまでにした
#C:pythonlifegame>python 0301.py

#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]

#
#

#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]
#[ ] [ ] [ ] [ ] [ ]

#Traceback (most recent call last):
# File "0301.py", line 215, in <module>
# show()
# File "0301.py", line 202, in show
# for i in range():
#TypeError: range expected 1 arguments, got 0