python
1taisyou = [ 1 if i =="!" else 10 if i == "?" else 0 if i == "+" else i for i in (list(input()))] 2print(taisyou) #[1, 10, 0, 1, 1, 10, 10, 0, 1, 1, 10, 10] 3print(sum(taisyou)) #55 4 5#入力データ !?+!!??+!!??
『概要』
入力データの内、
・! のときは、リストに1
・? のときは、リストに10
・+ のときは、リストに0
最後にsumを使って合計を出しています。
『質問』
入力データの内必要なのは、!と?だけです。
+については不要なので、無視したいのですが、やり方がわからず、ifをつかって仕方なく0を入れるようにしています。
今回に関して、不要なのは、+だけだったので、ifを書いて解決しましたが、今後不要な入力データが増えたとき、その数だけifを書くのは手間と思いました。
下記のようなことをやりたいのですが、いい方法はありますでしょうか?
python
1taisyou = [ 1 if i =="!" else 10 if i == "?" else i for i in (list(input()))] 2#!と?だけifでかく。ほかの入力データは不要。こんなコードにしたいが、これだと望んだ動きをしない。 3 4print(taisyou) #[1, 10, 1, 1, 10, 10, 1, 1, 10, 10] #希望する出力 5print(sum(taisyou)) #55 6 7#入力データ !?+!!??+!!??
リスト内包表記([~])だけで完結させたいということでしょうか?あまりに複雑な条件の場合、素直にメソッドを作ったほうが良いと思いますが、制約がありますか?
回答3件
あなたの回答
tips
プレビュー