0

Pythonでプログラムを設計しています。
私は電車に 67 席ありますが、列ごとに座席を分割する必要があります。列ごとに 5 席、最後の列には 2 席があります。
これをどのように設計するかわかりません。私が設計したコードを貼り付けています。

クラス予約(オブジェクト):

    def __init__(self, 席, perrow, lastrow):
        self.seats = 座席数
        self.perrow = ペロー
        self.lastrow = lastrow
        self.allseats = []
        インポート数学
        from decimal import Decimal
        rows = math.ceil((Decimal(seats)/Decimal(perrow)))
        for i in range(int(rows)):
            self.allseats.append([])
        iii = 0
        iii = 1
        for ii in range(int(rows)):
            範囲内の b の場合 (perrow):
                self.allseats[iii].append({'SEATNO'+str(iiii):'無料'})
                iiii = iiii +1
            iii = iii + 1
        for i in range(perrow-lastrow):
            self.allseats[-1].pop()
        self.allseats を出力

上記のコードは正常に動作していますが、効率的ではありません。何か効率的な方法があれば教えてください。

4

1 に答える 1

0
def make_seats(seats, perrow, lastrow):
    full_rows = seats // perrow
    return [['Free' for _ in range(perrow)]
            for _ in range(full_rows)] + [['Free' for _ in range(lastrow)]]

lastrowである必要があるため、引数は実際には必要ありませんがseats % perrow、入力の一部であるため、使用しました。

とにかく、これが何を意味するのかを理解するために、分解してみましょう。

まず、満席の列の数は、すべての座席に収まるのに必要な列の数を切り捨てたものです。

これで、各完全な行は文字列['Free' for _ in range(perrow)]perrowコピーになります'Free'

そして、full_rows完全な行があるため、ネストされたリスト内包表記です。

lastrowそして、座席をもう1列追加する必要があります。

于 2013-11-12T06:10:38.767 に答える