2017-04-16 16 views
0

各入力をテストしようとしていますが、数値がクリアされてから数式が実行されます。例えば、ユーザは数字ではなくNを入力し、数字ではなく数字を出力したいのに対し、ユーザが1を入力した場合は、次の関数に移動して同じことをしたい問題の答えを出力する最後のセクションに進みます。Python Recrusive Statementエラーが定義されていません

プログラムは、非数値領域の両方のエラーをまだ通過していますが、最後に機能が得られたときには、基数や電力が定義されていることを伝えています。

コードはPython2とPython3で書かれています。すべてがうまく動作します。私はほとんどpython3を使用します。

[テストここでPicture/Error Msg][1]

# Below we are creating the recursive statement to do the math for us. We are calling Base and Power 
    # from the main function where the user Inputs the numbers. 
    def pow(base, power): 
     if power == 0: 
      return 1 
     if power == 1: 
      return base 
     else : 
      return base * pow(base, power - 1) 
    def determineBase(): 
     while True: 
      try: 
       base = int(input ('Please Enter A Base: ')) 
      except ValueError: 
       print("Please use whole numbers only. Not text nor decimals.") 
       continue 
      else: 
       return base 

    def determinePower(): 

     while True: 
      try: 
       power = int(input ('Please Enter A Power: ')) 
      except ValueError: 
       print("Please use whole numbers only. Not text nor decimals.") 
       continue 
      else: 
       return power 

    def main(): 
     determineBase() 
     determinePower() 
     pow(base,power) 
     print("The answer to",base,"to the power of", power,"is", pow(base,power),".") 
    main() 
+0

再帰的リターンと次のdefの間にギャップを入れてみてください。スクリーンショットからそれらのラインを削除してください。スタックトレース全体を見ることができますか? –

+0

@James_Hughesは、スペースが何も変更しなかったとは限りません。私はあなたのために別の写真を追加しました。 48行目と46行目でエラーが発生しています – Yrroth

+0

問題は再帰関数自体にはありません。下記を参照してください。 –

答えて

0
def main(): 
    determineBase() 
    determinePower() 
    pow(base,power) 

、どちらbasepowerが定義されています。代わりに、それらの関数呼び出しの結果を格納し、それらを渡すことでした:

def main(): 
    base = determineBase() 
    power = determinePower() 
    pow(base, power) 
+0

は、プログラム全体が間違っていない限り、何も解決していません。 – Yrroth

+0

*「解決済み」*は何を意味しますか?正確なエラーメッセージとスタックトレースは何ですか? – poke

+0

メッセージは画像の下の最初の投稿に掲載されました。変数を宣言すると、同じ問題が出力されます。 – Yrroth

0

問題は再帰関数の内部ではなく、あなたのmain関数の内部にあります。

baseを引数としてpow()関数に渡していることが原因で問題が発生しています。これは、変数ベースを最初に定義することなく(powerについても同様です)。現在、あなたはこれらの2つの関数の値を格納していないとして

def main(): 
    base = determineBase() 
    power = determinePower() 
    pow(base,power) #this line could probably be removed 
    print("The answer to",base,"to the power of", power,"is", pow(base,power),".") 

:あなたはの線に沿って何かを必要と言い換える

+0

これらを変更しても、依然としてエラーが発生します。 – Yrroth

関連する問題