#第４章　チャレンジ問題
#No.1_数字を入力値として受け取り、その数字を2乗した戻り値を返す関数を書いてみよう。

def f():
    """
    入力値を2乗した値を算出する関数
    入力値：整数
    """
    try:
        num = input("type a number: ")
        in_num = int(num)
        return in_num ** 2
    except ValueError:
        print("数字を入力してください。")

print(f())



#No.2_文字列を引数とし、その文字列を出力する関数を書いてみよう。

def f(word):
    """
    文字列を出力する関数
     ・引数：文字列
    """
    print(word)

f("Hello, everyone!")


#No.3_3つの必須引数と2つのオプション引数がある関数を書いてみよう。

def f(x, y, z , a=4, b=5):
    """
    「（引数1+引数2）+（引数3‐引数4）* 引数5」の計算結果を算出する関数
   　・引数1：整数（必須）
   　・引数2：整数（必須）
   　・引数3：整数（必須）
   　・引数4：整数（オプション）
   　・引数5：整数（オプション）
    """
    return (x + y) + (z - a) * b
    
result = f(10,11,12)
print(result)



#No.4_2つの関数からなるプログラムを書いてみよう。
#     1つ目の関数は整数を引数として受け取り、その整数を2で割って求められる整数を出力として返そう。
#     2つ目の関数は整数を引数として受け取り、4でかけた整数を返そう。
#     プログラム内で、1つ目の関数を呼び、戻り値を変数として保存し、2つ目の関数の引数として渡そう。

"""
関数1：整数を2で割って、整数を出力する
　・引数：整数
関数2：関数1の出力結果に4をかけた整数を出力する
　・引数：関数1の出力
"""
def num_1(x):
    return x // 2

def num_2(x):
    return x * 4


result_1 = num_1(10)
result_2 = num_2(result_1)

print("関数1の商：" + str(result_1))
print("関数2の積：" + str(result_2))



#No.5_文字列をfloat型に変換して戻り値とする関数を書いてみよう。
#     起こり得る例外をキャッチする例外処理を書こう。

def f(x):
    """
    文字列をfloat型に変換して出力する関数
   　・引数：文字列
    """
    try:
        return float(x)
    except ValueError:
        print("数字を入力してください。")

result = f("2.1")
print(result)



#No.6_上の1から５で書いた関数すべてにdocstringを追加しよう。
