平素よりお世話になっております。pythonの関数についていまいちわからないので質問させていただきます。
関数(def)→同様の動作をいたるところで繰り返し行うもの
という認識をしています。そのことを踏まえて次のプログラムを書いてみたのですがうまく動作しません。
def calc_fee(): age=int(input("あなたの年齢を教えてください。")) dotw=input("本日は月曜日ですか?はい1いいえ2") fee=2000 if age<3: fee=0 elif age<6: fee=1000 elif age>=60: fee=1500 if is_monday==1: fee=fee*0.8 print(fee) flg=0 feeT=0 while flg==1: calc_fee() feeT=feeT+fee flg=input("まだ人はいますか?はい1いいえ2")
この手の内容であれば、わざわざdefを使わなくてもできる内容ではあるのですがdefを使った場合はどのように動作できるのだろうと思い作ってみました。しかし、inputを使うと動作しなくなるという現象が発生してしまいました。また、定義した関数を利用する際、引数をinputを使い代入するということは可能でしょうか?引数は必ず整数型や実数型でなければいけないのでしょうか?
例えば、
def calc_fee(age,is_monday): fee=2000 if age<3: fee=0 elif age<6: fee=1000 elif age>=60: fee=1500 if is_monday==True: fee=fee*0.8 print(fee) calc_fee(18,True) calc_fee(3,False) calc_fee(60,True) x=input("年齢を教えてください") calc_fee(x,False)
回答よろしくお願いします。
修正後
def calc_fee(): age=int(input("あなたの年齢を教えてください。")) dotw=int(input("本日は月曜日ですか?はい1いいえ2")) fee=2000 if age<3: fee=0 elif age<6: fee=1000 elif age>=60: fee=1500 if is_monday: fee=fee*0.8 print(fee) flg=0 feeT=0 while flg==1: calc_fee() feeT=feeT+fee flg=int(input("まだ人はいますか?はい1いいえ2"))
def calc_fee(age,is_monday): fee=2000 if age<3: fee=0 elif age<6: fee=1000 elif age>=60: fee=1500 if is_monday==True: fee=fee*0.8 print(fee) calc_fee(18,True) calc_fee(3,False) calc_fee(60,True) x=int(input("年齢を教えてください")) calc_fee(x,False)
上の方はエラーすらでないで動かいない状態です。
下の方は、
x=input("年齢を教えてください")→x=int(input("年齢を教えてください"))
に変えることで、無事動きました。ありがとうございました。
回答3件
あなたの回答
tips
プレビュー