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

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

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

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

Q&A

解決済

2回答

857閲覧

この問題が分かりません

VENOM12

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/11/21 08:21

前提・実現したいこと

変数 a に [5,9,-3,6,-1,2] を代入しなさい。この a に対し、それぞれの数値の符号情報を下記の sign() 関数で求め、それを変数 b に キーを a の要素、値に符号情報となる辞書を代入しなさい。なお、辞書の生成には内包表記を利用すること。最後に b の内容を表示しなさい。

def sign(a): if type(a)==int or type(a)==float: if a>0 or a==0: return 1 if a<0: return -1 else: return 0

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

b: {5: 1, 9: 1, -3: -1, 6: 1, -1: -1, 2: 1}
とゆう答えにしたいのですができません

該当のソースコード

def sign(a): if type(a)==int or type(a)==float: if a>0 or a==0: return 1 if a<0: return -1 else: return 0 a=[5,9,-3,6,-1,2] c={} for i in range(0,len(a)): c[i]=sign(a[i]) b={x:c.values() for x in a} print(b)

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答2

0

解決済みになっていますが、「内包表記を利用すること」という条件がありますよね。

python

1def sign(a): 2 return { e: -1 if e < 0 else 1 for e in a } 3 4a = [5,9,-3,6,-1,2] 5b = sign(a) 6print(b)

追記
問題を誤解していたようです。sign関数は与えられていてそれを使うんですよね。

python

1def sign(a): 2 if type(a)==int or type(a)==float: 3 if a>0 or a==0: 4 return 1 5 if a<0: 6 return -1 7 else: 8 return 0 9 10a = [5,9,-3,6,-1,2] 11b = { e : sign(a) for e in a} 12print(b)

投稿2021/12/25 14:47

編集2021/12/25 14:52
kazuma-s

総合スコア8224

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

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

0

ベストアンサー

質問者さんのコードを少し修正しました。
※もっとスマートな書き方はあるかと思いますが元のコードへの小修正にしました。

Python

1def sign(a): 2 if type(a)==int or type(a)==float: 3 if a>0 or a==0: 4 return 1 5 if a<0: 6 return -1 7 else: 8 return 0 9a=[5,9,-3,6,-1,2] 10c={} 11for i in range(0,len(a)): 12 c[i]=sign(a[i]) 13b={a[i]:c[i] for i in range(len(a))} 14print(b) 15# {5: 1, 9: 1, -3: -1, 6: 1, -1: -1, 2: 1}

投稿2021/11/21 08:56

meg_

総合スコア10607

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

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

VENOM12

2021/12/25 14:14

返信ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問