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

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

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

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

Q&A

解決済

2回答

294閲覧

【Python】引数の個数が変わる関数の入力方法がわからない

cbb4

総合スコア1

Python

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

0グッド

0クリップ

投稿2022/05/23 23:41

AOJ Doubly Linked Listについての質問です。
この問題を解くために以下の関数を作りました。

python

1from collections import deque 2ans = deque() 3 4def doubly_linked_list(operation, value=None): 5 if operation == "insert": 6 ans.appendleft(value) 7 elif operation == "delete": 8 try: 9 ans.remove(value) 10 except: 11 pass 12 elif operation == "deleteFirst": 13 ans.popleft() 14 elif operation == "deleteLast": 15 ans.pop()

関数は作れたのですが、指定された入力にうまく関数を合わせられません。
入力は以下の通りです。

9 insert 5 insert 2 insert 3 insert 1 delete 3 insert 6 delete 5 deleteFirst deleteLast

最初の9は入力されるコマンド(operation, value) の数です。
この回数分forを回そうと思ったのですが、

  • 入力が insert 5 のように来るのでmapで受け取ろうとした
  • しかし、deleteFirst, deleteLast が来るとエラーになる
  • つまり、 insert 5 の場合

python

1operation, value = map(input().split()) 2doubly_linked_list(operation, value)

とできるが、deleteFirstの時にどう記述すればいいか分からない

という感じで手が止まってしまいました。

どなたかうまく入力できる方法を教えていただけないでしょうか。

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

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

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

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

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

guest

回答2

0

作った関数とそれを使って処理をする方法とに食い違いがあるようです。

関数の引数は、insert、delete、deleteFirst、deleteLast のいずれかが入るoperationと、何からの値が入るvalueがあり、valueは与えられなければNoneが入るようになっています。

なので、引数に値が1つか 2つのリストを渡してやればいいのです。

python

1doubly_linked_list(*input_list)

ところが、

入力が insert 5 のように来るのでmapで受け取ろうとした

のでは、食い違っています。。

投稿2022/05/24 01:51

TakaiY

総合スコア12763

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

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

cbb4

2022/05/24 05:02

回答ありがとうございます。 doubly_linked_list(operation, *value)とすることで実現できました。
guest

0

ベストアンサー

python

1ls = input().split()

などと一旦リストで受けて、lsの長さに応じてvalueの値を
ls[1]Noneにすれば良いでしょう。

投稿2022/05/24 01:19

ozwk

総合スコア13521

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

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

cbb4

2022/05/24 05:01

回答ありがとうございます。 doubly_linked_list(operation, *value)とすることで実現できたのですが、ozwkさんの方法でもできると思うのでベストアンサーとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問