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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

3回答

909閲覧

linux 3つの引数の間にカンマを入れて実行できるコードにしたい

Shin_go

総合スコア19

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2021/07/30 15:05

Linuxで下記のコードを作成しました。

Linux

1import sys 2 3def DecisionTree(FREQ,PAY,PRICE): 4 5 if FREQ <= 5 and PAY <= 5000 and FREQ <= 1: 6 return 'RISK:1,FQ:0' 7 if FREQ <= 5 and PAY <= 5000 and FREQ > 1: 8 return 'RISK:0,FQ:0' 9 if FREQ <= 5 and PAY > 5000 : 10 return 'RISK:1,FQ:0' 11 elif PRICE <= 3000 : 12 return 'RISK:0,FQ:1' 13 else: 14 return 'RISK:1,FQ:1' 15 16num1=int(sys.argv[1]) 17num2=int(sys.argv[2]) 18num3=int(sys.argv[3]) 19 20num=DecisionTree(num1,num2,num3) 21print(num) 22

この画像のように、引数の間にカンマを入れて、上記のコードを実行するとと出力できません。
カンマが無ければ、出力ができるのですが、カンマを入れて出力できるようなコードに修正したいのですが、ご存じの方、ご回答いただけないでしょうか。

イメージ説明

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

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

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

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

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

guest

回答3

0

ベストアンサー

python

1num1=int(sys.argv[1]) 2num2=int(sys.argv[2]) 3num3=int(sys.argv[3]) 4 5num=DecisionTree(num1,num2,num3) 6print(num) 7

の部分を以下に変更しましょう。

python

1args = sys.argv[1].split(",") 2 3num1=int(args[0]) 4num2=int(args[1]) 5num3=int(args[2]) 6 7num=DecisionTree(num1,num2,num3) 8print(num)

投稿2021/07/30 17:34

ppaul

総合スコア24670

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

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

Shin_go

2021/07/31 01:25

ありがとうございます。うまくいきました! 一点よろしければ教えていただけますか。 args = sys.argv[1].split(",") これのリスト内の数値は、なぜ、1なのでしょうか? 0や2でもいいのですか?
ppaul

2021/07/31 03:04

$ python DecisionTree.py AAA BBB のように書くと sys.argv[1]に"DecisionTree.py"、sys.argv[1]に"AAA"、sys.argv[2]に"BBB" が入ります。 今回は、 $ python DecisionTree.py 6,1000,4000 なので、sys.argv[1]に"6,1000,4000"が入っています。 また、sys.argv[2]は存在しないのでアクセスするとエラーになります。 従って0や2ではだめです。
guest

0

以下のようにして分割してあげるのがいいかもです

python

1num1, num2, num3 = (int(x) for x in sys.argv[1].split(','))

投稿2021/07/30 17:08

holy_

総合スコア364

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

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

0

これだと、argv[1]"6,1000,4000"とかになるので、
x = sys.argv[1].split(",")するとカンマで3つに分割できます。

投稿2021/07/30 15:18

otn

総合スコア85901

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

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

Shin_go

2021/07/30 15:53

ありがとうございます。ただ、やはりエラーがでてうまく処理できないですね。。。 TypeError: DecisionTree() missing 2 required positional arguments: 'PAY' and 'PRICE' というエラーがでてしまいました。
otn

2021/07/30 16:27

?? DecisionTreeを引数1つで呼んだみたいですけど、 ちゃんと、 num=DecisionTree(num1,num2,num3) と書いてない?何故??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問