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

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

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

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

Q&A

解決済

1回答

4549閲覧

Pythonで、args と argvの利用方法がわからなくなる時があります。違いとは何でしょうか?

TMtm

総合スコア1

Python

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

0グッド

0クリップ

投稿2022/05/22 09:12

Pythonで、args と argvの利用方法がわからなくなる時があります。違いとは何でしょうか?

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

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

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

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

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

meg_

2022/05/22 09:46

どんな時ですか?
quickquip

2022/05/22 10:45 編集

args と argv が何を指しているのか他の人には伝わりません。 ただ > args と argvの利用方法がわからなくなる時があります だと"普段は分かっている"ということなはずなので、それぞれのコードを示したらいいと思います。
TMtm

2022/05/22 10:55

お世話様です。実際に引っかかってしまった問題ですが、 Q) コマンドライン上で「python3 script.py one two three four five」を実行したときに、以下の結果を得たい。コード2行目の【A】に入るものとして正しいものはどれか。 [ 実行結果 ] ['script.py', 'one', 'two'] [ script.pyのコード ] import sys print(【A】) 下の中のどれでしょうか? sys.argv[0:2] sys.argv[0:3] sys.argv[1:3] sys.args[1:3] sys.args[1:4] なのでsys.argsなのか、sys.argvなのか、迷っております。。。
melian

2022/05/22 10:59

$ python3 Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> help(sys.args) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'sys' has no attribute 'args'. Did you mean: 'argv'?
cx20

2022/05/22 11:32 編集

sys.args は引っ掛け問題なのでは?エラーメッセージにあるように sys.args という属性は存在していないようです。 > AttributeError: module 'sys' has no attribute 'args'. Did you mean: 'argv'? AttributeError:モジュール'sys'には属性'args'がありません。 もしかして:'argv' ?
TMtm

2022/05/22 12:08

御返信有難う御座います。 えっ、「sys.args という属性は存在していない」のですか? 早速試してみました。 おっしゃる通りmodule 'sys' has no attribute 'args'. でした。 また sys.argvを試したら、説明文が出てきました。 且つ回答を見てみたら、sys.argv[0:3] が正しい回答でした。 でもなぜ [0:3] なのでしょうか? わたしはてっきり [1:3] が正しいと思っていました。。。
quickquip

2022/05/22 12:14 編集

質問は質問を編集して書いてください。 > でもなぜ [0:3] なのでしょうか? は、直截には「問題で要求されている結果にならないから」以外の回答はないですよね??
meg_

2022/05/22 12:28

> わたしはてっきり [1:3] が正しいと思っていました。。。 何故そう思ったのでしょうか?
TMtm

2022/05/22 13:25

問題文章の中で、「python3 script.py one two three four five」とあり、 期待している実行結果が、['script.py', 'one', 'two'] なので python3 →0 script.py →1 one →2 two →3 three →4 four →5 five →6 と数えました。 なので、['script.py', 'one', 'two'] は [1:3] と思いました。
guest

回答1

0

ベストアンサー

下の中のどれでしょうか?
sys.argv[0:2]
sys.argv[0:3]
sys.argv[1:3]
sys.args[1:3]
sys.args[1:4]

sys.args は存在しない為、引っ掛け問題かと思います。

でもなぜ [0:3] なのでしょうか?
わたしはてっきり [1:3] が正しいと思っていました。。。

sys.argv の内容をすべて表示させてみたら分かるかな、と思います。
python3sys.argv には含まれてない為 script.py が「0」番目になります。
スライス機能の終了インデックスの指定が少し分かりづらいかも知れませんね。two はインデックスとしては「2」ですが、
終了インデックスは +1 した番号を設定することになっている為、[0:3] となります。

python

1import sys 2print("sys.argv: ",sys.argv) 3print("sys.argv[0:2]:",sys.argv[0:2]) 4print("sys.argv[0:3]:",sys.argv[0:3]) 5print("sys.argv[1:3]:",sys.argv[1:3])

■ 実行結果

C:\home\edu\python\sys.argv>python3 script.py one two three four five sys.argv: ['script.py', 'one', 'two', 'three', 'four', 'five'] sys.argv[0:2]: ['script.py', 'one'] sys.argv[0:3]: ['script.py', 'one', 'two'] sys.argv[1:3]: ['one', 'two']

投稿2022/05/22 13:38

編集2022/05/22 13:42
cx20

総合スコア4693

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問