仕事で使うかもしれないため、Pythonを勉強中です。
筆者は、仕事でC言語、趣味でJavaScriptを使い、少しだけRustを勉強した系の人です。
Pythonは何に使ったらいいかもわかっていませんが、なんか使えると便利と聞いたので、勉強しようとしています。
ひとまず
ひとまず文法を覚えようと思って、京都産業大学の練習問題を課題にして、100本ノックの基礎編19問をPythonで行いました。
以下はそのメモです。
当然のことながら、書いてあるコードの正確性は保証できません。
素人の書いたコードだから当然です。
No.00
print("Hello World!")
このあたりはC言語とJavaScriptとRustがごっちゃになりやすいところです。
まあ、調べるのに時間がかかるところでもないので、この言語はなんだったっけ?となったら、都度調べます。
No.01
x = 12345
y = 23456
print("{0} + {1} = {2}".format(x,y,x+y))
Pythonでのprintfを調べたら、これが新しめの方法だよって出てきました。
20241202追記
ご指摘いただいたので、追記。
Python3.6(2016年リリース)からフォーマット済み文字列リテラルが追加されたようです。
変数名をそのまま埋め込めるため、複数の変数があるときは可読性が高いですね。
str.format()
の形式はPython2.6(2008年リリース)から、導入されたようです。
No.02
x = 12345
y = 7
print("{} / {} の余りは {}".format(x,y,x%y))
このへんは、C言語とかと変わらない印象。
No.03
number = input("input number: ")
print("your number is {}".format(number))
調べたらでてきた方法でお手軽に。
No.04
number = int(input("input number: "))
print("answer = {}".format(number*3))
int()
がない状態で書いたら、
input number: 43
answer = 434343
と、なりました。
型の問題だなと推測したので、JSにあるように、適当にint()
でくくったら、想定通りになりました。
No.05
num1 = int(input("input 1st number: "))
num2 = int(input("input 2nd number: "))
print("sum: {}".format(num1 + num2))
print("sub: {}".format(num1 - num2))
print("mul: {}".format(num1 * num2))
print("div: {}, rem: {}".format(int(num1 / num2), num1 % num2))
まあ、こういうのはシンプルですね。
No.06
num = int(input("input number: "))
if(num == 0) :
print("zero")
Pythonでのif文の書き方は調べました。
インデントが必要なんですね。
これは、他の言語に比べて体裁が崩れにくくていいなあと思います。
No.07
num = int(input("input number: "))
if(num == 0):
print("zero")
else :
print("not zero")
else節はわかりやすい。
No.08
num = int(input("input number: "))
if(num > 0) :
print("positive")
ふつう。
No.09
num = int(input("input number: "))
if(num > 0) :
print("positive")
elif(num < 0) :
print("negative")
else :
print("zero")
ふつう。
No.10
num = int(input("input number: "))
print("absolute value is {}".format(abs(num)))
よくabs()
ってあるよなあと思って、調べたらあったので適当に使いました。
No.11
for n in range(0, 10, 1) :
print("Hello World!")
回数が決まっているループにwhileは使いたくなくて、forを調べました。
Pythonでのforはfor ... in ...
の形で使うらしい。
で、inの右側にはrangeを使うらしいので、適当にそれっぽく書いてみました。
0~N-1までという点にはお約束通りひっかかりましたし、これからもひっかかるでしょう。
No.12
num = int(input("input number: "))
for n in range(0,num, 1):
print("Hello World!")
入力値に置き換わっただけ。
No.13
num = int(input("input number: "))
for n in range(0, num+1, 1):
print("{}".format(n))
このへんでも、NかN+1かでひっかかっています。
No.14
num = int(input("input number: "))
for n in range(num, 0-1, -1) :
print("{}".format(n))
自分的に終端値がわかるように、0-1
と書きました。
No.15
num = int(input("input number: "))
for n in range(0,num+1, 1) :
if(n%2 == 0):
print("{}".format(n))
少し考えましたが、単純にカウントアップしていって、2の倍数だったら出力する方式です。
No.16
first_flag = True
num = 1
while(first_flag or num != 0) :
num = int(input("input number: "))
first_flag = False
Pythonにはdo-whileがない。
その場合の適切な書き方がわからず、かなり不細工なプログラムになりました。
最初、orを||と書いて、コンパイラが怒ってきました。
No.17
arr = range(0,10,1)
for i in arr :
print("{}".format(i))
いまいち、range()とlist(range())の違いがわからない……と思いながら、書いています。
No.18
num = int(input("input number: "))
arr = [num for i in range(10)]
for i in arr:
print("{}".format(i))
書き方がわからず、
C言語ならこう書くんだけど……と、少し考えこみました。
適当に調べていたら、[num for i in range(10)]
の書き方でてきたため、これを使いました。
No.19
nn = 5
arr = list(range(nn))
for i in range(nn):
number = int(input("input number: "))
arr[i] = number
for i in range(nn) :
print("{}".format(arr[i]))
要素数が変わってもいいように変数化。
その他はふつうに。
最後に
以上、Python勉強中なので、練習問題を解いた記録でした。
C言語向けの練習問題のようですが、基礎的な文法を学ぶにはどの言語でも良い課題になりますね。