質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

2291閲覧

Pythonでの得点計算ができません。

yangpinglaoshi

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/02 10:20

pythonで入力した正解数を元に点数換算と合否判定が出るようなコードを書いています。

namae = input('名前を入れてください') def listening(): input_count1 = input(namae+ "さんの聴解の正解数を入れてください") try: input_count1 = int(input_count1) except: print("数字を入力してください") return listening() if int(input_count1) >28: print ("正解数が間違っています。もう一度入力してください") return listening() else: print ("あなたの正解数は" + str(input_count1)+ "です") input_count1 = listening() def gr(): input_count2= input(namae+ "さんの言語知識と読解の正解数を入れてください") try: input_count2 = int(input_count2) except: print("数字を入力してください") return gr() if int(input_count2) >70: print ("正解数が間違っています。もう一度入力してください") return gr() else: print ("あなたの正解数は" + str(input_count2)+ "です") input_count2 = gr() fullscore_L = 28 fullscore_GVR = 70 kijun1 = 19 kijun2 = 38 ### kansanten1 = 60 * input_count1//fullscore_L kansanten2 = 120 * input_count2//fullscore_GVR print("聴解の換算点は" + str(kansanten1) +"点です") print("言語知識と読解の換算点は" + str(kansanten2) +"点です") gokei = kansanten1 + kansanten2 print("合計得点は" + str(gokei) + "点です") if gokei < 90: print ("残念、" + namae + "さんは不合格です") if gokei >=90: print ("おめでとう、" + namae + "さんはN4合格です") if kansanten1 < kijun1: print("でも残念、" + namae + "さんは聴解で足きりで不合格です") if kansanten2 < kijun2: print("でも残念、" + namae + "さんは言語知識と読解で足きりで不合格です")

そこでこのようなメッセージが出ました。
Traceback (most recent call last):
File "中略", line 36, in <module>
kansanten1 = 60 * input_count1//fullscore_L
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'

intを該当箇所に足してみたりいろいろと試してみたのですが、にっちもさっちもいかなくなりました。
どなたか教えていただければ、助かります。

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

お疲れ様です。
前の方のご指摘のように、
個々の関数の末尾に、肝心のreturn xxx が抜けていると思います。

ちょうど、さっき、
Pythonのエラーメッセージは具体的でわかりやすい(... AAA yyy BBB)
みたいな記事を書きました。
Pythonを今後使われるなら、参考になるかも。。。

修正例:

python

1 2 print ("あなたの正解数は" + str(input_count1)+ "です") 3return input_count1 ###追加 4 5 print ("あなたの正解数は" + str(input_count2)+ "です") 6return input_count2 ###追加 7 8kansanten1 = 60 * input_count1//fullscore_L ### #をはずす

投稿2020/02/02 10:38

編集2020/02/02 12:45
0kcal

総合スコア275

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yangpinglaoshi

2020/02/02 11:52

コメントありがとうございます。おかげさまでエラーの意味は分かりました。 しかし、それでもにっちもさっちもいかない状況です。
0kcal

2020/02/02 12:40

お疲れ様です。 下記の###印の3行、変更してみて下さい。 動くと思います。 (このコードは、ほぼ0から、ご自分で書かれたのでしょうか?)   ```python print ("あなたの正解数は" + str(input_count1)+ "です") return input_count1 ###追加 print ("あなたの正解数は" + str(input_count2)+ "です") return input_count2 ###追加 kansanten1 = 60 * input_count1//fullscore_L ### #をはずす ```
0kcal

2020/02/02 12:46

お疲れ様です。 インデントがうまく表現できなかったので、回答欄に転記しました。
yangpinglaoshi

2020/02/05 15:17

ありがとうございました。 無事解決しました。
guest

0

たとえばgr関数にてprint ("あなたの正解数は" + str(input_count2)+ "です")に到達した場合、return文を書いていないのでNoneが返りinput_count2 = gr()によりinput_count2Noneになります。
よってkansanten2 = 120 * input_count2//fullscore_GVRにて120Noneの演算がなされることになり提示エラーが発生します。
適切な値を返すようにgr関数を修正ください。

投稿2020/02/02 10:30

can110

総合スコア38256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yangpinglaoshi

2020/02/02 11:51

ありがとうございます。何分こてこての文系で初心者なもので・・・ 原因がreturn文であることまでは皆さんのアドバイスや調べたりして、色々確認してわかってきたんですが、どのように書いていいのかと。 return "(imput_count1)"、return”(imput_count2)”と書くと、 unsupported operand type(s) for //: 'str' and 'int'とでるし、 intに合わせても、10進法にはできません?というメッセージが出るし・・・ 折角教えていただいたのにすみません。
can110

2020/02/02 12:28

「return "(imput_count1)"」だと「(imput_count1)」という**文字列**が返ります。 単に「return input_count2」でよいのでは?
yangpinglaoshi

2020/02/05 15:17

ありがとうございました。 無事解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問