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

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

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

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

Q&A

解決済

2回答

2978閲覧

エラー missing 1 required positional argument:

175atsu

総合スコア21

Python

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

0グッド

0クリップ

投稿2019/01/17 10:22

編集2019/01/17 12:15

前提・実現したいこと

print("答えの単語は",len(secret_word),"文字です")この部分の文字を表示させたい。

secret_wordにランダムで選ばれた単語が入っていて、その関数を実行するモノとしてans_word = choose_word()をした後、printさせたいがエラーが出てしまう。
wordlistに何が足りてないのかわからなくて困っています。

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

TypeError Traceback (most recent call last) <ipython-input-9-5c7a7e39374b> in <module>() 37 38 wordlist = load_words() ---> 39 ans_word = choose_word() 40 print("答えの単語は",len(secret_word),"文字です") 41 TypeError: choose_word() missing 1 required positional argument: 'wordlist'

該当のソースコード

python

1 2import random 3import string 4 5WORDLIST_FILENAME = "words.txt" 6 7 8def load_words(): 9 10 print("ファイルから単語を読み込み中...") 11 # inFile: file 12 inFile = open(WORDLIST_FILENAME, 'r') 13 # line: string 14 line = inFile.readline() 15 # wordlist: list of strings 16 wordlist = line.split() 17 print(" ", len(wordlist), "単語読み込み完了.") 18 print("Hangman ゲームを始めます") 19 return wordlist 20 21 22 23def choose_word(wordlist): 24 """ 25 wordlist (list): 単語のリスト (strings) 26 Returns リストからランダムに選択した単語 27 """ 28 secret_word = random.choice(wordlist) 29 return secret_word 30 31wordlist = load_words() 32"""以下解決し変更しました。""" 33ans_word = choose_word(wordlist) 34print("答えの単語は",len(ans_word.secret_word),"文字です")

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

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

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

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

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

guest

回答2

0

ベストアンサー

こうですかね。

Python

1ans_word = choose_word(wordlist)

関数の仮引数名を外部の変数と同じにしたからと言って、
呼び出し時の実引数の引き渡しを省略可能なわけではありません。

Python

1def choose_word(wordlist): 2 ^^^^^^^^ このwordlistと、 3 4wordlist = load_words() 5^^^^^^^^ このwordlistは、名前が同じだけで一切無関係です。

投稿2019/01/17 10:27

編集2019/01/17 10:45
LouiS0616

総合スコア35660

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

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

175atsu

2019/01/17 12:17

回答ありがとうございます おかげでその部分はなおりた。ありがとうございます もしよろしければ追加でお聞きしたいのですが、 ---> 41 print("答えの単語は", len(ans_word.secret_word), "文字です") AttributeError: 'str' object has no attribute 'secret_word' このようなエラーが出てしまい、文字列の文字数を出したいので、問題ないかと思ってたのですが。 もしよろしければ教えてください。
LouiS0616

2019/01/17 12:19

単に len(ans_word) で良いのでは? choose_word の返り値 secret_word を ans_word で受けているのですから。
175atsu

2019/01/17 12:23

単純なことでした、 ありがとうございました!!
guest

0

python

1ans_word = choose_word(wordlist)

なのではないかと。

投稿2019/01/17 10:27

hiro-k

総合スコア902

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問