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

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

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

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

Q&A

解決済

1回答

1056閲覧

Githubでダウンロードしたプログラムが動きません

takatoyo

総合スコア13

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

0グッド

0クリップ

投稿2021/10/15 07:08

前提・実現したいこと

初心者です。
Githubでダウンロードしたpythonのプログラムを動かしたいです。

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

下記のエラーメッセージが表示され、与えられるべき引数が与えられていないということは分かったのですが、自分の知識不足でどう直したら良いのかわかりません。

ERROR: The function received no value for the required argument: all_tiles Usage: agari_analyzer.py ALL_TILES WIN_TILE <flags> optional flags: --player_wind | --round_wind additional flags are accepted For detailed information on this command, run: agari_analyzer.py -- --help

該当のソースコード

Python

1#!/usr/bin/env python3 2 3 4# Hamukichi (Nombiri), MIT License 5 6 7from mahjong import agari, constants, shanten, tile 8from mahjong.hand_calculating import hand, hand_config 9import fire 10import copy 11 12 13OPT_RULES = hand_config.OptionalRules(has_open_tanyao=True) 14WIND_STR2CONST = {"EAST": constants.EAST, 15 "SOUTH": constants.SOUTH, 16 "WEST": constants.WEST, 17 "NORTH": constants.NORTH} 18WIND_STR2CHARA = {"EAST": "東", 19 "SOUTH": "南", 20 "WEST": "西", 21 "NORTH": "北"} 22 23def __analyze(all_tiles, win_tile, player_wind, round_wind, **hand_confs): 24 all_tiles_136 = tile.TilesConverter.one_line_string_to_136_array(all_tiles) 25 all_tiles_34 = tile.TilesConverter.one_line_string_to_34_array(all_tiles) 26 win_tile_136 = tile.TilesConverter.one_line_string_to_136_array(win_tile)[0] 27 player_wind = player_wind.upper() 28 round_wind = round_wind.upper() 29 player_wind_136 = WIND_STR2CONST[player_wind] 30 round_wind_136 = WIND_STR2CONST[round_wind] 31 all_hand_confs = copy.copy(hand_confs) 32 all_hand_confs["player_wind"] = player_wind_136 33 all_hand_confs["round_wind"] = round_wind_136 34 config = hand_config.HandConfig(options=OPT_RULES, **all_hand_confs) 35 sh_obj = shanten.Shanten() 36 sh_res = sh_obj.calculate_shanten(all_tiles_34) 37 ag = agari.Agari() 38 if not ag.is_agari(all_tiles_34): 39 return (sh_res, None) 40 else: 41 calc = hand.HandCalculator() 42 hand_res = calc.estimate_hand_value(tiles=all_tiles_136, 43 win_tile=win_tile_136, 44 config=config) 45 wind = "{}場{}".format(WIND_STR2CHARA[round_wind], WIND_STR2CHARA[player_wind]) 46 han_fu = "{} 飜 {} 符".format(hand_res.han, hand_res.fu) 47 if hand_res.han <= 5: 48 basic_score = hand_res.fu * 2 ** (hand_res.han + 2) 49 if basic_score > 2000: 50 gan = "満貫" 51 else: 52 gan = "" 53 elif hand_res.han <= 7: 54 gan = "跳満" 55 elif hand_res.han <= 10: 56 gan = "倍満" 57 elif hand_res.han <= 12: 58 gan = "三倍満" 59 else: 60 n = hand_res.han // 13 61 if n == 1: 62 gan = "役満" 63 else: 64 gan = "{} 倍役満".format(n) 65 66 is_tsumo = hand_confs.get("is_tsumo", False) 67 is_dealer = player_wind == "EAST" 68 if hand_res.han < 1: 69 all_cost = "1 飜縛りを満たしていません" 70 elif is_tsumo: 71 if is_dealer: 72 all_cost = "{} 点 オール".format(hand_res.cost["additional"]) 73 else: 74 all_cost = "{} 点 / {} 点".format(hand_res.cost["additional"], 75 hand_res.cost["main"]) 76 else: 77 all_cost = "{} 点".format(hand_res.cost["main"]) 78 hand_report = {"hand_res": hand_res, "wind": wind, 79 "han_fu": han_fu, "gan": gan, "all_cost": all_cost, "yakus": hand_res.yaku} 80 return (sh_res, hand_report) 81 82 83def analyze(all_tiles, win_tile, player_wind="SOUTH", round_wind="EAST", **hand_confs): 84 analyze_res = __analyze(all_tiles, win_tile, player_wind, round_wind, **hand_confs) 85 sh_res, hand_report = analyze_res 86 if hand_report is None: 87 if sh_res != 0: 88 print("{} 向聴".format(sh_res)) 89 else: 90 print("聴牌") 91 else: 92 print(hand_report["wind"]) 93 print(hand_report["han_fu"], end=" ") 94 print(hand_report["gan"]) 95 print(hand_report["all_cost"]) 96 if hand_report["yakus"] is not None: 97 for yaku in hand_report["yakus"]: 98 print(yaku.japanese) 99 100 101def main(): 102 fire.Fire(analyze) 103 104 105if __name__ == '__main__': 106 main()

試したこと

自分の知識不足でどう直したら良いのかわかりませんでした。

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

ダウンロード元のURLです。

https://gist.github.com/hamukichi/58fba8acd3e034ec5ed542802a356846

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

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

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

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

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

jbpb0

2021/10/15 13:14

> For detailed information on this command, run: agari_analyzer.py -- --help と書かれてるので、それやってみたら何か分かるかも
guest

回答1

0

ベストアンサー

エラーの通り、--help オプションで実行してみます。

cmd

1> python agari_analyzer.py --help 2INFO: Showing help with the command 'agari_analyzer.py -- --help'. 3 4NAME 5 agari_analyzer.py 6 7SYNOPSIS 8 agari_analyzer.py ALL_TILES WIN_TILE <flags> 9 10POSITIONAL ARGUMENTS 11 ALL_TILES 12 WIN_TILE 13 14FLAGS 15 --player_wind=PLAYER_WIND 16 Default: 'SOUTH' 17 --round_wind=ROUND_WIND 18 Default: 'EAST' 19 Additional flags are accepted. 20 21NOTES 22 You can also use flags syntax for POSITIONAL ARGUMENTS

これにより引数は

  • ALL_TILES:すべての牌
  • WIN_TILE:上がり牌

が必須のようです。

引数の渡し方が不明でしたので、モジュールのヘルプを見てみます。

Python

1>>> from mahjong import tile 2>>> help(tile.TilesConverter.one_line_string_to_136_array) 3Help on function one_line_string_to_136_array in module mahjong.tile: 4 5one_line_string_to_136_array(string, has_aka_dora=False) 6 Method to convert one line string tiles format to the 136 array, like 7 "123s456p789m11222z". 's' stands for sou, 'p' stands for pin, 8 'm' stands for man and 'z' or 'h' stands for honor. 9 You can pass r or 0 instead of 5 for it to become a red five from 10 that suit. To prevent old usage without red, 11 has_aka_dora has to be True for this to do that.

どうやら引数は "123s456p789m11222z" のように渡せばよいらしいですね。
純正九蓮宝燈で上がってみました。

cmd

1>python agari_analyzer.py 11123456789999m 9m 2東場南 326 飜 40 符 2 倍役満 464000 点 5純正九蓮宝燈

投稿2021/10/15 13:13

nemoplus

総合スコア161

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

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

takatoyo

2021/10/15 15:18

丁寧な説明までしていただきありがとうございます! ただ実行するだけでなく引数を与えて実行する必要があるんですね。 ずっと困ってたので助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問