🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

5364閲覧

PythonでのTypeError: 'str' object is not callableについて

Kawachan99

総合スコア114

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2020/12/02 10:57

前提・実現したいこと

higherlower gameをpython3.Xで作ろうとしているのですが、以下のエラーコードが出てきます。

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

Traceback (most recent call last): File "main.py", line 42, in <module> play_game() File "main.py", line 38, in play_game compare(person1, person2, answer) TypeError: 'str' object is not callable

該当のソースコード

Python

1from game_data import data 2import art 3import random 4from replit import clear 5 6SCORE = 0 7IS_GAME_OVER = False 8 9def random_person(compare_against): 10 random_user = random.choice(data) 11 user_name = random_user["name"] 12 user_followers = random_user["follower_count"] 13 user_description = random_user["description"] 14 user_country = random_user["country"] 15 print(f"{compare_against}: {user_name}, {user_description}, from {user_country}.") 16 return user_followers 17 18def compare(person1_compare, person2_compare, answer_compare): 19 global SCORE, IS_GAME_OVER 20 if person1_compare > person2_compare and answer_compare == "B": 21 IS_GAME_OVER = True 22 elif person1_compare < person2_compare and answer_compare == "A": 23 IS_GAME_OVER = True 24 else: 25 return SCORE + 1 26 27 28def play_game(): 29 global SCORE, IS_GAME_OVER 30 while not IS_GAME_OVER: 31 print(art.logo) 32 compare = "Compare A" 33 person1 = random_person(compare) 34 print(art.vs) 35 against = "Against B" 36 person2 = random_person(against) 37 answer = input("Who has more followers? Type 'A' or 'B': ") 38 compare(person1, person2, answer) 39 clear() 40 print(f"Sorry, That's wrong. Final score: {SCORE}") 41 42play_game()

試したこと

このエラーに関して
・strを変数として使用している
・関数名と変数名を同じにして使用している
ということをgoogleで見つけたため確認をしました
また、関数のパラメータを他の関数内で変数として使用していたため、両者を違う名にしました

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

atomでコーディングを行い、repl.itでテストを行っています

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

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

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

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

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

guest

回答2

0

一度命名した関数名や変数名を二度と使用しないこと

投稿2020/12/02 11:17

Kawachan99

総合スコア114

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

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

0

ベストアンサー

compare = "Compare A"
関数と同じ名前です。別名にしてください。

投稿2020/12/02 11:03

can110

総合スコア38341

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

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

Kawachan99

2020/12/02 11:05

compare = "Compare A"のところでした。 すみません。確認不足でした。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問