[解決済み] TypeError: 型 'NoneType' の引数は反復可能ではありません。
質問
Pythonでハングマンゲームを作っています。このゲームでは、1つのPythonファイルに、配列からランダムな文字列を選択し、変数に格納する関数があります。その変数は、別のファイルにある関数に渡されます。その関数は、ユーザーの推測を文字列として変数に格納し、その推測が単語の中にあるかどうかをチェックします。しかし、私が文字を入力してエンターキーを押すたびに、この質問のタイトルのエラーが表示されます。念のため、Python2.7を使っています。以下は、単語を受け取る関数のコードです。
import random
easyWords = ["car", "dog", "apple", "door", "drum"]
mediumWords = ["airplane", "monkey", "bananana", "window", "guitar"]
hardWords = ["motorcycle", "chuckwalla", "strawberry", "insulation", "didgeridoo"]
wordCount = []
#is called if the player chooses an easy game.
#The words in the array it chooses are the shortest.
#the following three functions are the ones that
#choose the word randomly from their respective arrays.
def pickEasy():
word = random.choice(easyWords)
word = str(word)
for i in range(1, len(word) + 1):
wordCount.append("_")
#is called when the player chooses a medium game.
def pickMedium():
word = random.choice(mediumWords)
for i in range(1, len(word) + 1):
wordCount.append("_")
#is called when the player chooses a hard game.
def pickHard():
word = random.choice(hardWords)
for i in range(1, len(word) + 1):
wordCount.append("_")
さて、以下はユーザーの推測を取り込んで、それがゲームに選ばれた単語に入っているかどうかを判断するコードです(wordCount変数には注意を払わないでください。また、"words"は、上記のコードを含むファイルの名前です)。
from words import *
from art import *
def gamePlay(difficulty):
if difficulty == 1:
word = pickEasy()
print start
print wordCount
getInput(word)
elif difficulty == 2:
word = pickMedium()
print start
print wordCount
elif difficulty == 3:
word = pickHard()
print start
print wordCount
def getInput(wordInput):
wrong = 0
guess = raw_input("Type a letter to see if it is in the word: \n").lower()
if guess in wordInput:
print "letter is in word"
else:
print "letter is not in word"
これまで、gamePlay関数内の変数"guess"をstr()で文字列に変換したり、.lower()で小文字にしてみたり、wordsファイルでも同様のことをやっています。以下は、これを実行したときに表示されるエラーです。
File "main.py", line 42, in <module>
main()
File "main.py", line 32, in main
diff()
File "main.py", line 17, in diff
gamePlay(difficulty)
File "/Users/Nathan/Desktop/Hangman/gameplay.py", line 9, in gamePlay
getInput(word)
File "/Users/Nathan/Desktop/Hangman/gameplay.py", line 25, in getInput
if guess in wordInput:
ここにある "main.py" は私が書いた別の Python ファイルです。もし他のファイルも見たいなら教えてください。しかし、今回紹介したものが唯一の重要なものだと感じています。お時間をいただき、ありがとうございました。もし、重要なことが抜けていたら教えてください。
解決方法は?
関数が何も返さない場合など。
def test():
pass
という暗黙の戻り値を持っています。
None
.
このように、あなたの
pick*
メソッドが何も返さない場合などです。
def pickEasy():
word = random.choice(easyWords)
word = str(word)
for i in range(1, len(word) + 1):
wordCount.append("_")
は、それらを呼び出す行、例えば
word = pickEasy()
セット
word
から
None
ということで
wordInput
で
getInput
は
None
. ということになります。
if guess in wordInput:
が相当します。
if guess in None:
と
None
のインスタンスです。
NoneType
はイテレータ/繰り返し機能を提供しないので、この型エラーが発生します。
修正方法は、戻り値の型を追加することです。
def pickEasy():
word = random.choice(easyWords)
word = str(word)
for i in range(1, len(word) + 1):
wordCount.append("_")
return word
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] Pythonで、あるオブジェクトが反復可能かどうかを判断するにはどうしたらいいですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】NameError: 名前 'self' が定義されていません。