質問するログイン新規登録
Python

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

Q&A

解決済

2回答

183閲覧

農家はREPLACE()されましたというゲームで思った挙動をしてくれない

p.m.

総合スコア1

Python

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

1グッド

0クリップ

投稿2025/10/13 00:57

1

0

実現したいこと

うまく動作しないプログラムのどこを直し自分がどこをうまく理解できていないのか知りたい

前提

農家はREPLACE()されましたというゲームを最近やり始めたのですが
今は6×6のマスで1マスにつき1個ずつ作物を育てれます。
作物を植える動作、収穫する動作をドローンがやってくれるのですがその動きをプログラムで制御するゲームです。
Treeというアイテムが出てきて上下左右斜めのマスに同じTreeがあると成長速度が遅くなるため
1マスづつ離して植えなければいけなくドローンの座標が偶数か奇数か判定して偶数なら植えるようなプログラムを書こうと思いました。

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

ヒントを元に新しい関数を定義し戻り値がTrueなら"True"と表示Falseなら"False"と表示する簡単なプログラムを書いてみました。 コードを実行してみるとすべて"False"と表示されてしまいます。

該当のソースコード

python

1x, y = get_pos_x(), get_pos_y() 2print(x) 3def is_even(x): 4 return x % 2 == 0 5if is_even(True): 6 print("True") 7else: 8 print("False")

試したこと

python

1x, y = get_pos_x(), get_pos_y() 2if x % 2 == 0: 3 print("True") 4else: 5 print("False")

新しい関数を定義せずにやってみたところそちらはうまく動作しました。
このプログラムで進めているのですができないとなんとなく気持ちわるいので2つのプログラムの何が違い何を自分がわかっていないのか教えてもらいたいです。

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

ゲームの捕捉にPythonと似たと書いてありましたので完全に一緒ではないかもしれません。

melian👍を押しています

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

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

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

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

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

melian

2025/10/13 02:22

if is_even(True): としていますが、これは if is_even(x): とするのではないでしょうか。
p.m.

2025/10/13 03:46

解決しました。ありがとうございます。 関数をうまく理解していませんでした。 この場合is_even(x)はxを2で割った余りが0なら(x % 2 == 0)を呼び出して?いるという考えでよろしいでしょうか? なので2を割ったら0になるのでif文でTrueがプリントされる。 3を割ったら0にならないので分岐NoでFalseがプリントされるという感じでしょうか?
melian

2025/10/13 04:37

> この場合is_even(x)はxを2で割った余りが0なら(x % 2 == 0)を呼び出して?いるという考えでよろしいでしょうか? 「呼び出して」、というよりはis_even(x)の中でx % 2の結果(xを2で割った余り)が0と等しいかどうかを調べています。そして、0と等しければTrueを、等しくない場合はFalseを返します。例えば、Python のインタラクティブモードで以下を実行してみると判るかと思います。 >>> 2 % 2 == 0 True >>> 3 % 2 == 0 False
p.m.

2025/10/13 07:37

わかりやすくありがとうございます。すっきりしました ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
guest

回答2

0

ベストアンサー

※ 質問へのコメントを転記

if is_even(True): としていますが、これは if is_even(x): とするのではないでしょうか。

関数をうまく理解していませんでした。
この場合is_even(x)はxを2で割った余りが0なら(x % 2 == 0)を呼び出して?いるという考えでよろしいでしょうか?
なので2を割ったら0になるのでif文でTrueがプリントされる。
3を割ったら0にならないので分岐NoでFalseがプリントされるという感じでしょうか?

「呼び出して」、というよりはis_even(x)の内部でx % 2の結果(x2で割った余り)が0と等しいかどうかを調べています。そして、0と等しければTrueを、等しくない場合はFalseを返します。例えば、Python のインタラクティブモードで以下を実行してみると判るかと思います。

python

1>>> 2 % 2 == 0 2True 3>>> 3 % 2 == 0 4False

投稿2025/10/13 07:52

melian

総合スコア21501

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

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

0

if is_even(True):

is_even は x 座標を引数に貰わないといけないんですよね?

投稿2025/10/13 02:23

jimbe

総合スコア13424

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問