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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

2690閲覧

pythonで、点数で仕分けがしたいです。(初心者です。)

123123123

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/08/02 07:42

編集2018/08/02 09:48

pythonで、点数で仕分けがしたいです。(初心者です。)

入力値はこちらで用意します。(数値は変わります。)
1段目が、合格点、追試点です。
2段目が、テストを受けた人数です。
3段目以降が、人数分の点数です。(左:1回目、右:2回目の点数です)

50 40
3
60 20
40 20
50 55

この入力値だと、1回目50点以上で合格です。

1回目の点数が大切なので、1回目の点数が合格点に足りていたら、
2回目の点数は関係なく合格です。

1回目に50点以下で、かつ2回目が40点以上の人だけが追試です。

それ以下は不合格です。

作ったプログラムは、以下です。

a=[int(x) for x in input().split()] num=int(input()) b=[list(map(int,input().split())) for j in range(num)] a1=a[0] a2=a[1] for hikaku in b: if a1>=hikaku: print("合格") elif a1<hikaku and a2<hikaku: print("不合格") else: print("追試")

すると、下記のエラーが出ました。
******
Traceback (most recent call last):
File "Main.py", line 13, in <module>
if a1>hikaku:
TypeError: unorderable types: int() > list()
******

TypeError: unorderable types: int() > list()について書いてあるQ&Aを見たり、インターネットで調べてみたり、bの入力方法を変更したりなど色々試みましたが、解決にはいたりませんでした。

思った値を表示するには、修正すればよいでしょうか。

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

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

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

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

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

guest

回答2

0

エラーの原因自体は、int型とlist型のオブジェクトを比較していることです。

そのコードだと、hikakuはlist型になります。


以下コメント。

この場合「列」じゃなくて「行」ですね。

そして

plain

150 40 23 360 20 440 20 550 55

一行目と二行目は質問文の説明で理解できましたが、3行目以降はなぜ2列あるのでしょうか。特に質問文には説明がありませんが、コードの雰囲気だと両方50以上の人を合格させるということ?

また、合格と追試の違いは? 

50点以下で、かつ40点以下の人だけが追試と表示される

不公平な学校ですね。50点から40点の間の人は、それなりに頑張ったのに追試の機会無く不合格ですか。40点以下の人は追試のチャンスがあるのですね。

あと、50点以上なら合格で、50点以下で・・・というのはそもそもおかしいですね(50点の人はどっち?)。

・・・というふうに疑問点がたくさんあります。要件はちゃんと説明してください。日本語でロジックを説明できない人にプログラムは書けません。

あと、b1は未定義ですが。

投稿2018/08/02 08:12

編集2018/08/02 08:13
hayataka2049

総合スコア30933

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

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

123123123

2018/08/02 09:47

b1は修正済みです。 その他は、追記しました。 エラーに関係ないと思ったので急いで書いてしまいました。 すみません。
guest

0

ベストアンサー

bがリストのリストになっているので、その要素hikakuもまたリストなのです。
試しに出力して覗いてみると良いでしょう。

Python

1for hikaku in b: 2 print(hikaku) 3 4 if a1>hikaku: # ここをどのように書き換えれば良いでしょうか。 5 print("合格") 6 elif a1<hikaku and b1<hikaku: 7 print("不合格") 8 else: 9 print("追試")

投稿2018/08/02 07:45

LouiS0616

総合スコア35660

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

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

123123123

2018/08/02 08:06

ありがとうございます。ご指摘をもとに見直しまして、分かりました。 どちらと比較するかの指定が抜けていました。 すべて、hikaku にしていたものを、 hikaku[0]、hikaku[1]とそれぞれ対応する値に変更しましたら、うまくいきました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問