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

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

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

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

Q&A

解決済

3回答

813閲覧

if を用いて判別したい

gamera_niki

総合スコア2

Python

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

0グッド

0クリップ

投稿2022/11/21 06:48

編集2022/11/21 16:42

前提

pythonにおいて次のようなことをできるようなコードが書きたいです。
ifとディクショナリを用いることが条件です。

実現したいこと

現在日本での献血できる条件は次のようになっている。
男性:17歳以上69歳以下
女性:18歳以上69歳以下
次のディクショナリで示されている人が献血できるかどうかを判別するプログラムを作成
データとして次のものを使用し、名前を献血可否を出力する
{"名前":"Mr.A", "年齢":17, "性別":"男"}
{"名前":"Mr.B", "年齢":17, "性別":"女"}

発生している問題・エラーメッセージ

エラーメッセージ ``` File "<ipython-input-4-722bd184065d>", line 4 if human_1["年齢"] >= 17 and <= 69: ^ SyntaxError: invalid syntax ### 該当のソースコード if human_1["年齢"] >= 17 and <= 69: ソースコード human_1 = [{"名前":"Mr.A", "年齢":17, "性別":"男"}] human_2 = [{"名前":"Ms.B", "年齢":17, "性別":"女"}] if human_1["年齢"] >= 17 and <= 69: print("可能") elif human_1["性別"] == "男": print("可能") if human_2["年齢"] >= 18 and <= 69: print("可能"") elif human_2["性別"] == "女":   print("可能") ### 試したこと ディクショナリをリストにしたりしたが駄目でした おそらくほとんど間違っているコードかもしれません 申し訳ないです。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

gamera_niki

2022/11/21 07:02

インターネットで1時間ほど調べたりテキストを読んだりしたのですがわかりませんでした。
guest

回答3

0

男女で判定違うならこうするべきかな?

flag=false if human_1["年齢"] <= 69: if human_1["年齢"] >= 17 and human_1["性別"]="男": flag=true elif human_1["年齢"] >= 18: flag=true #flag=trueなら献血可と表示

本来データごとに個別で判定式組むんじゃなくて、同じ変数に格納してどのパターンでも正常にチェックできるようにすべき

投稿2022/11/21 06:50

編集2022/11/21 07:11
pig_vba

総合スコア807

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

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

0

ベストアンサー

python

1human_1 = [ 2 {"名前":"Mr.A", "年齢":17, "性別":"男"}, 3 {"名前":"Mr.B", "年齢":17, "性別":"女"}, 4] 5condition = { 6 "男": lambda h: 17 <= h["年齢"] <= 69, 7 "女": lambda h: 18 <= h["年齢"] <= 69, 8} 9for h in human_1: 10 print(h["名前"], "献血可" if condition[h["性別"]](h) else "献血不可") 11 12# 13# Mr.A 献血可 14# Mr.B 献血不可

投稿2022/11/21 06:58

編集2022/11/21 07:06
melian

総合スコア19618

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

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

gamera_niki

2022/11/21 07:01

Mr.A Ms.Bともに献血ができてしまうのですがどうすればいいでしょうか
melian

2022/11/21 07:03

失礼しました。性別条件を見落としていました。書き直します。
guest

0

エラーの起きているif human_1["年齢"] >= 17 and <= 69:を日本語に直すともし人間1の年齢が17以上かつ69以下であればとなって正しく感じますが,プログラム観点ではandで隔てられhuman_1["年齢"]に対する比較演算であることを認識しません.

if human_1["年齢"] >= 17 and human_1["年齢"] <= 69:と書くか,if 17 <= human_1["年齢"] <= 69:と書いてください.

詳しくは演算の優先順位を参照してください.and演算より比較演算の方が高い優先順位が割り当てられています.

投稿2022/11/21 06:53

PondVillege

総合スコア1579

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

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

gamera_niki

2022/11/21 06:57

そこを直したらその部分のエラーは解消されました。 if human_2["年齢"] >= 18 and <= 69: print("可能"") この部分で File "<ipython-input-5-43775d7c5769>", line 10 print("可能"") ^ SyntaxError: EOL while scanning string literal といったエラーが出てしまいました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問