もOKですが、簡単に説明するために行ってみよう... Pythonで
from collections import namedtuple
Name = 'Square'
条約は、変数名や関数名のためall_lower_with_underscores
を使用して、クラスのためSnakeCase
名を維持することです。だから、これはここに
name = "Square"
...
Point = namedtuple('Point', 'x y')
PointBegin = (0, 0)
2点でなければなりません(ラメしゃれ、申し訳ありません):
まず、ネーミング、上記CFは(あるべきpoint_begin
のようなもの - 実際にstart_point
またはorgin
はより正確ですが、とにかくです)。
start_point = Point(0, 0)
PointList = (
(1, 0)
(1, 1)
(0, 1)
(0, 0)
)
が再び命名、プラス1 /これは、2 /そうではありません、list
ではありません:あなたは、これがPoint
になりたい場合は
その後、あなたはそれを代わりにtuple
点を確認する必要があります有効なPythonの構文、そして3 /もしあなたがPoint
のリストを必要とするなら、明示的にそれを求める必要があります。ああ、はい:コレクションは通常、複数形、すなわち「ポイント」で表されます。
coords = [(1, 0), (1, 1), (0, 1), (0, 0)]
points = [Point(x, y) for x, y in coords]
def move_to(pt)
構文::あなたが必要
私は、この場合にはあなたのような何かをしたいと思う「:」をここに:
def move_to(pt):
また、読みやすさは、Pythonの哲学の非常に重要な部分です。あなたが "ポイント" を意味している場合、すべての手段でそれを綴る "ポイント":
def move_to(point):
print('Begin at (', point.x, ',', point.y, ')')
持っている慈悲と
print("Begin at ({}, {})".format(point.x, point.y))
def draw_to(pt)
print('Draw to (', pt.x, ',', pt.y, ')')
同上
def draw(name, bgn_pt *pt_list) :
同上プラスS/bgn_ptのフォーマットを使用する文字列/ start_point/g(または原点など何でも意味が分かりますが、意味が分かりませんが何かを理解する必要はありません)、パラメータの間にカンマが必要です。つまり、def draw(name, start_point, *points)
また、*args
の構文はvarargsです。ここにあなたの関数がPoint
のリスト(または任意の反復可能)をので、この構文を使用しても使用はありません期待し:救助でフォーマットする
def draw(name, start_point, points):
print 'Drawing object ', name
文字列:
print("Drawing object {}".format(name))
...
move_to(bgn_pt)
for pt in pt_list:
draw_to(pt.x, pt.y)
上の図の
cf(命名法など)また、あなたのdraw_to
関数は2 x
とy
引数まあ
move_to(start_point)
for point in points:
draw_to(point)
#Call the draw function, passing the list of named tuples.
我々は確かにポイントのリストを渡す。この時、単一Point
、ない見込ん;)全体のために今
draw(name, start_point, points)
訂正コード:
from collections import namedtuple
# define data types and functions first
Point = namedtuple('Point', 'x y')
def move_to(point)
print('Begin at ({}, {})'.format(point.x, point.y))
def draw_to(point)
print('Draw to ({}, {})'.format(point.x, point.y))
def draw(name, start_point *points):
print('Drawing object {}'.format(name))
move_to(start_point)
for point in points:
draw_to(point)
# now our variables.
# NB we wrap this in a `if __name__ == "__main__"`
# to gard this part from being executed if this script
# is imported as a module
if __name__ === "__main__":
start_point = Point(0, 0)
coords = [(1, 0), (1, 1), (0, 1), (0, 0)]
points = [Point(x, y) for x, y in coords]
name = "square"
draw(name, start_point, points)
多くのカンマがありません。また、 'PointList = [Point(1,0)、...]'はポイントのリストです。あなたはタプルを作成しようとしているようです。 – jonrsharpe
あなたの 'PointList'はリスト型ではありません。(ちょうどいくつかのコンマを使わずに有効なコードでもありません)、' draw'の署名にはカンマがありません。また、リストを '*'引数とみなすのではなく、 'def draw(name、bgn_pt、pt_list)'のようにしたいと思うでしょう。 – birryree
*「他の文法や慣習の誤りについてあまり心配していない」*基本的な構文が間違っていても、他の誰かがあなたを助けることにどのように関わってくると思いますか? – SiHa