😎
【初心者向け/ITスクール 64日】Pythonの基礎一覧2(関数) および(Number Baseball)
はじめに
今日は、ITスクールに通った64日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。
今日は、昨日の続きで、Pythonの文法を勉強し、直接活用する練習をしました。
Javaとの違い
-
None
: javaのnull -
self
: thisと同じ約わりですが、省略が不可能! - メソッド、関数のOverloadが不可
- Destructor: PythonもヒープメモリはGCが管理しますが、オブジェクトがメモリから離れる前に、Destrcutorがcall backされます。
def __del__(self):
print("Delete Book Object on Memory")
-
@static method : Pythonは、static methodがないので、メソッドの上に@static methodというDECORATIONを付けます。
-
instance field : Javaの場合、宣言をしないかぎり、コンストラクタとgetter,setterが不可能ですが、Phthonはコンストラクタからinstance fieldも宣言するのが普通です。
def __init__(self, title, price):
print("Custom Constructor ")
self.title = title
self.price = price
関数
def test():
print("I'm sleepy")
def test2():
pass
def test3(a=0, b=0):
print(a+b)
def test4(a=0, b=0):
q = a + b
w = a - b
e = a * b
r = a / b
return q,w,e,r
pass: まず宣言内容を作成せずに、skipすることができ、JSのようにdefault parameterを設定することができます。
class
class Dog:
name ="asdf"
def bark(self):
print("wangwang")
def printInfo(self):
# Java : this.name => this. は省略可能> name
# Python : self.name => self. は省略不可能
print(self.name, self.age)
@staticmethod
def staticMethodTest():
print("static wangwang")
d.bark()
Dog.bark(d)
class宣言時にもパラメータにselfというオブジェクト参照値を入れることが必須です。
instanceからはパラメータを入れずにも呼び出すことが可能です。
Number Baseball
computerが0~9から3つを組み合わせた3桁数と、ユーザーが0~9から3つを組み合わせた3桁数を分析し、互いの3桁数から一致すれ数があれば、ball, 桁(index)までおなじあらstrikeになるゲーム。3strikeの場合、完全一致になるので、終了
Javaと違う点 Not Inを活用すること(No Set)
以前、javaからも具象があるのですが、時間内に失敗したチャレンジです。
Javaの癖があることで、Hashsetとshuffleメソッドの同じやり方で、接したのですが、
pythonのnot in演算子でとても簡単に解決できる問題でした。
私のコード
def comPick():
firstNum = randint(0,9)
s = {firstNum}
while len(list(s)) < 3 :
s.add(randint(0, 9))
print("컴퓨터가 세 자리 수를 선정했습니다.")
return list(s)
def userPick1():
userlist = []
firstNum = int(input("첫번째 번호 입력(0~9)"))
if -1<firstNum<10:
userlist.append(firstNum)
return userlist
else:
print("잘못된 입력입니다. 다시 입력해주세요")
return userPick1()
def userPick2(userlist):
secondNum = int(input("두번째 번호 입력(0~9)"))
if -1<secondNum<10:
if secondNum != userlist[0]:
userlist.append(secondNum)
return userlist
else:
print("중복된 숫자를 입력했습니다. 다시 입력해주세요")
return userPick2(userlist)
else:
print("잘못된 입력입니다. 다시 입력해주세요")
return userPick2(userlist)
def userPick3(userlist):
finalNum = int(input("마지막 번호 입력(0~9)"))
if -1<finalNum<10:
s ={userlist[0],userlist[1]}
s.add(finalNum)
if(len(list(s)))==3:
userlist.append(finalNum)
return userlist;
else:
print("중복된 숫자를 입력했습니다. 다시 입력해주세요")
return userPick3(userlist)
else:
print("잘못된 입력입니다. 다시 입력해주세요")
return userPick3(userlist)
after
def comPick():
numbers = []
while len(numbers) < 3 :
num = randint(0,9)
if num not in numbers:
numbers.append(num)
print("컴퓨터가 세 자리 수를 선정했습니다.")
return numbers
def userPick1():
userlist = []
firstNum = int(input("첫번째 번호 입력(0~9)"))
if -1<firstNum<10:
userlist.append(firstNum)
return userlist
else:
print("잘못된 입력입니다. 다시 입력해주세요")
return userPick1()
def userPick2(userlist):
secondNum = int(input("두번째 번호 입력(0~9)"))
if -1<secondNum<10:
if secondNum != userlist[0]:
userlist.append(secondNum)
return userlist
else:
print("중복된 숫자를 입력했습니다. 다시 입력해주세요")
return userPick2(userlist)
else:
print("잘못된 입력입니다. 다시 입력해주세요")
return userPick2(userlist)
def userPick3(userlist):
finalNum = int(input("마지막 번호 입력(0~9)"))
if -1<finalNum<10:
if finalNum not in userlist:
userlist.append(finalNum)
return userlist;
else:
print("중복된 숫자를 입력했습니다. 다시 입력해주세요")
return userPick3(userlist)
else:
print("잘못된 입력입니다. 다시 입력해주세요")
return userPick3(userlist)
def judge(comlist,userlist):
strike, ball = 0,0
for i in range(0,3):
for j in range(0,3):
if comlist[i] == int(userlist[j]):
if i == j:
strike += 1
else:
ball += 1
return strike,ball
Discussion