見出し画像

GCI (東京大学オンライン講義)第2回 練習問題

今回は、現在僕が受講している。GCI(東京大学オンラインクラス)で出題された演習問題について、解いていきたいと思います。プログラム初心者にとって良い問題だと思ったので、ぜひやってみてください。

1.2.8 練習問題

(1) 変数xに整数が格納されているとします。xが偶数ならば0、奇数ならば1を返すプログラムを作成してください。

#Example_1
x = int(input('Enter a integer number: '))
if x%2 == 0: #even number 
   print(0)
else: #odd number
   print(1)

こんな感じでいいですね。mod(%)を用いて書きました。単純に2で割ったらあまり0というプログラムです。あとは、if文で条件分岐するのみです。

(2) 要素がすべて整数値であって、長さが1以上のリストが変数xに格納されているとします。xの要素の中で最も大きい要素を返すプログラムを作成してください。ただし、max関数などは使用せず、ループで実現してください。

#Example_1
x = []  #Make the Empty list 
n = int(input("Enter a number of elements: ")) 
for i in range(0, n):
   el = int(input("Enter the number ("+str((i+1))+"):"))
   x.append(el) #add 
print(x)

#After Generate a list
x_max = x[0] 
for item in x: 
   if item > x_max: 
       x_max = item
print("The max number is: "+str(x_max))

まずは、リストの生成するところから、nでリストの長さを指定する、そしてfor文を用いてリスト内の要素を聞いてappend(リストを追加できるメソッド)で空のxに追加するというプログラム。リストの生成が終わったら最大を探すプログラムを書く。リストの0番目を仮に最大と置き次要素がそれよりも大きかったら書き換えるといった感じです。
ちなみに、max関数を使えば一行で済みます笑

#After Generate a list
max(x)

これだけ。楽ですね。

(3) 長さが1以上の文字列を引数xとし、xの最後の1文字を返す関数fを定義してください。

def f():
   x = str(input("Enter some string here: ")) #input string
   print(x[len(x)-1]) #print the last string
f()

まず、inputでxに文字列を代入。len(x)で文字列を求める。文字列の最初は0なので、-1すれば、末端の文字列が求められる。

(4) 辞書を引数xとし、xに格納されているキーの数を返す関数fを定義してください。

x = {} #Make Empty dictionary as x
n = int(input("Enter the Number of elements: ")) #ask how many
for i in range(0, n): #Generate dictionary 
   key = str(input("Enter a string: "))
   value = int(input("Enter a integer: "))
   x[key] = value
print(x)
#After generate dictionary 
def f(): 
   print(len(x.keys())) #show how many keys in dictionary 
f() 

まずは、dictionaryの生成から。リストと同じようにfor文を用いて書いてみた。keyの数を求めればいいので、len関数を使って、x.keysの数を聞いて終わり。

(5) リストを引数xとし、xの要素を逆順に並べたリストを返す関数fを定義してください。ただし、reversed関数などは使用せず、ループやリストのスライスで実現してください。

#Generate a list same as (2)
x = []
n = int(input("Enter a number of elements: "))
for i in range(0, n):
   el = int(input("Enter the number ("+str((i+1))+"):"))
   x.append(el)
print(x)

#After generate a list 
def f():
   reverse_x = [] #def reverse_x as a new list
   for  i in range(len(x)): 
       elm = x[len(x)-i-1] 
       reverse_x.append(elm)
   print(reverse_x)
f()

リストの生成は(2)より同じ。f関数については、reverse_xという関数を新しく作ってから、xを逆から代入していくという形で書いてみた。

~最後に~

最後まで読んでいただき、ありがとうございます。質問や間違えているところがあればコメントで教えていただければ嬉しいです。これからも投稿していこうと思っているのでよろしくお願いします!

↓ 第二回の講義内容です興味があったら是非見てみてください。


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