![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
表示されないのは「表示するように作られていない」からです。
会話モードで実行しているときは、入力した式の計算結果を表示するように、自動変換が行われている、と考えるとよいでしょう。
>>> のときに
1+2
と入力したら、自動で
print(1+2)
に変換される、とかそういうイメージです。
スクリプトを実行するときはそうはならないので、表示したいなら「表示する」と明記する必要があります。
printと使うなど。
print(f(x))
はありますが、字下げの位置から def f(x): の一部と解釈されます。
その前のif文で、 真の場合でも偽の場合でも returnで戻ってしまうので、この行が実行されることはありません。
先頭に字下げを戻すと、今度は存在しない変数xを参照しようとしてエラーになります。
この1行は削除するのがいいでしょう。
No.2
- 回答日時:
文法エラーというのは、コンピュータがプログラムを解釈しているときに、どうにも辻褄が合わなくなったときに発生します。
そのため、発生箇所と真の間違い箇所が一致しないことがあります。
発生したところだけではなく、前後も確認しましょう。
指摘されている箇所の前後を抜き出すと
else:retuen x*f(x-1)
あきらかに変ですよね?
No.1
- 回答日時:
Pythonは、字下げ( 行頭の空白)で、機能をブロックに分けています。
そのため、字下げの位置について、とてもシビアです。
PythonのSyntax Error (文法的な間違い) の多くは、この字下げのミスです。
if x<=1:
で始まったら、この if の i と同じ位置まで字下げが戻ってくるまでが一つのブロックになります。
ブロック中は、常にそのブロックの字下げを維持しないといけません。
ところが写真を見るかぎり、 else retuen x*f(x-1) の else の e は if の f の位置から始まっています。
if とも違う、他のどの字下げとも違う位置からの字下げでは、何と対応したelseなのかがわかりません。
前にifがあるのだから、それに対するelseだよ、なんて理屈はPythonには通用しません。
ちゃんと、 対応する if と同じ字下げにしましょう。
また、 else は単独では使いません。
elseのブロックが始まる、という意味で else: と : を付けます。
あと、単純な書き間違いがあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 Pythonの3Dグラフ表示に関する質問です。 1 2022/12/06 15:03
- その他(プログラミング・Web制作) 【Python初学者】以下コードについて教えていただきたいです 4 2023/04/19 13:01
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- Ruby パイソンプログラミング 2 2022/12/03 18:44
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スカイプの最終ログイン時間。
-
「恐れ入りますが、この電話は...
-
Skypeで「現在アクティブ」と緑...
-
電話の受話器を置いても、再び...
-
電話をかけた時コール音が途中...
-
携帯から固定電話に掛けて通話...
-
着信通話とは何ですか?
-
FAX送信すると受信先で文字が薄...
-
Skype for businessを削除したい
-
着信電話番号「100」は何でしょ...
-
ワン切りした発信履歴も通話明...
-
固定電話同士の通話中、突然切...
-
オンラインなのにオフラインと...
-
skypeで外人と話したい
-
スカイプ自分の画像が小さく映る
-
iPadについてですが、iPadで通...
-
接続後、相手の音声が2秒で切れ...
-
skypeの基本的使用について
-
可愛い女の子
-
スカイプで勝手に通話が切れて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカイプの最終ログイン時間。
-
2017年現在、Skypeでブロックさ...
-
スカイプのダウンロード
-
Skypeのメッセージ送信不可
-
許可しますかという表示
-
IDLE (Python 3.7 32-bit)
-
「恐れ入りますが、この電話は...
-
電話の受話器を置いても、再び...
-
成人男性と女子高生(偽物?)のL...
-
携帯から固定電話に掛けて通話...
-
FAX送信すると受信先で文字が薄...
-
電話をかけた時コール音が途中...
-
Skypeで「現在アクティブ」と緑...
-
着信電話番号「100」は何でしょ...
-
着信通話とは何ですか?
-
PCから固定電話や携帯電話に電...
-
スカイプから電話での番号表示
-
skypeが24時間オンラインして...
-
Skype for businessを削除したい
-
ワン切りした発信履歴も通話明...
おすすめ情報
有難う御座います。指摘のとうり書きなをしました。
#factorial
x=int(input())
def f(x):
if x<=1:
return 1
else:retuen x*f(x-1)
print(f(x))
f(10)
RUNするとx*f(x-1)のxがSyntaxerror invalid syntaxが表示されます。
また、単純な書き間違いは何処でしょうか?
宜しくお願いします。
有難う御座います。
else:retuen x*f(x-1)の誤記訂正しました。retuen ー>return でSyntaxerror は出なく成りましたが
runを実行しても
X=10でのf(10)の結果が出力されません。
何故でしょうか?
宜しくお願いします。
有難う御座います。
#factorial
#x=int(input()) #error checkでerrorに成るのでコメントにしました。
def f(x):
if x<=1:
return 1
else:return x*f(x-1) #print(f(x))を削除しました。
print(f(993)) #933迄正常計算出来ました。
制約が有って使いづらいですね。
Mapleでは間単ですが