見出し画像

今日のミス【Python】

失敗は糧になる という事で今日自分が間違えたコードをまとめました。パイザの練習問題と、書籍の内容を写した時の間違いです。どこが間違っているか見つけてみてね!

正しいコードとその出力値は最後に載せておきます。

今日のミス

1. これはクラスとインスタンス変数を定義しているだけのコードです。

class Orange:
    def__init__(self, w, c):
        self.weight = w
        self.color = c


2. arrayというリストの一種類の文字列に何個の重複があるかどうか確かめるというものです。

array = ["HND", "NRT", "KIX", "NGO", "NGO", "NGO", "NGO", "NGO"]
jisyo = {}
for i in array:
   if i in jisyo:
       jisyo[i] += 1
else:
   jisyo[i] = 1
   
for i in jisyo.values():
   if i > 1:
       print(i)


3.  numというリストに入っている数字を昇順に並び替え、一つずつ改行して出力します。

num = [1, 3, 5, 6, 3, 2, 5, 23, 2]
for i in num.sort():
    print(i)


4.  三角形を表すTriangleクラスを定義して、面積を返すareaメソッド面積を変えられるchangeメソッドを持たせます。そしてTriangleオブジェクトを作り、areaメソッドを呼び出し結果を出力します。changeメソッドは、メソッドの引数に渡された値を、インスタンス変数lenとwidthを代入して変更します

class Triangle():
   def __init__(self, b, h):
       self.bottom = b
       self.height = h
   def area(self):
       return self.height * self.bottom / 2
   def change(self, b, h):
       self.bottom = b
       self.height = h
   
triangle = Triangle(20, 30)
print(area())
triangle.change(10,10)
print(triangle.area)


正しいコードと出力値

1.  の正しいコード

def と __ の間に空白がありませんでした。

class Orange:
    def __init__(self, w, c):
        self.weight = w
        self.color = c

クラスとインスタンス変数を定義しているだけなので何も出力されません。

2. の正しいコード

else文がインデントされていませんでした。

array = ["HND", "NRT", "KIX", "NGO", "NGO", "NGO", "NGO", "NGO"]
jisyo = {}
for i in array:
    if i in jisyo:
        jisyo[i] += 1
    else:
        jisyo[i] = 1
   
for i in jisyo.values():
    if i > 1:
        print(i)

出力値→ 5

3. の正しいコード

num.sort()が返す値はnoneなのでfor文に使うことはできません。

num = [1, 3, 5, 6, 3, 2, 5, 23, 2]
num.sort()
for i in num:
    print(i)

出力値→ 1
                2
     2
     3
                3
                5                    
     5
                6
                23

4. の正しいコード

最後から3行目と一行目の2箇所に間違いがりました。一箇所目がareaの後ろにつけるべきtriangle. の書き忘れ。二箇所目がまたまたarea の前につけるべき () の書き忘れです。

class Triangle():
    def __init__(self, b, h):
        self.bottom = b
        self.height = h
    def area(self):
        return self.height * self.bottom / 2
    def change(self, b, h):
        self.bottom = b
        self.height = h
   
triangle = Triangle(20, 30)
print(triangle.area())
triangle.change(10,10)
print(triangle.area())

最後に

最初はエラーが出るたび動揺し、何でこんな間違いしたんだー!?といちいち反応して少し落ち込んだりしていましたが、最近ではエラーが出ても当たり前のように間違えたところを直せるようになりました。

自分がどんな間違いをしたのか把握することで、同じ間違いをしにくくなりますので、自分がよく間違えるところをメモっておきましょう!


 

この記事が気に入ったらサポートをしてみませんか?