2017-11-14 14 views
-5

Pythonは 'height'という名前が定義されていないと言っていますが、私の論理によれば可変高さを返しますforループ内でアクセスしますか?Python 'height'が定義されていません

誰かが私を正しい方向に向けることができますか?おかげさまで 編集:get_int()は、cs50ライブラリ内の関数です。

import cs50 

def main(): 

    print("Enter a number between 0 and 26: ", end="") 

    i = get_height("Enter height: ", end="") 

def get_height(): 
    while True: 
     height = get_int() 
     if height <= 0 or height >= 23: 
      break 
    return height 


for i in range(height): 
    print(" " * (height - i), end="") 
    print("#" * (i + 2), end="") 
    print("") 


if __name__ == "__main__": 
    main() 
+0

私は範囲(get_height()) 'の意味ですか?戻り値の高さが変数の名前を返さない場合は、値を返します。 –

+1

つまり、 'get_height'の' height'という名前は 'get_height'関数にとってローカルです。関数の外にあるその名前のものとは何の関係もありません。また、 'get_height'は' main'で呼び出されていますが、 'main'自体はスクリプトの最後の行まで呼び出されていません。 –

+0

こんにちはヤコブ、この他の質問は正しい方向にあなたを指すことができるかもしれません。 https://stackoverflow.com/questions/419163/what-does-if-name-main-do – MackM

答えて

1
def get_int(): 
    tx = input("Enter height: ") 
    if tx.isdigit(): 
     return int(tx) 
    return None 

def get_height(): 
    while True: 
     height = get_int() 
     if height and height > 0 and height < 26: 
      return height 


if __name__ == "__main__": 
    print("Enter a number between 0 and 26: ") 

    height = get_height() 
    for i in range(height): 
     print(" " * (height - i), end='') 
     print("#" * (i + 2), end='') 
     print("") 
  1. get_intは、高さがwhileループに
  2. 高さが
  3. for in rangeが出た何PARAMを入手get_height DEF範囲
  4. から見えなかった範囲外であった
  5. 存在しませんメインスコープの
+0

私はこれを実行しようとしたときにコンソールに番号を入力すると、新しい行にジャンプして何らかの入力があるのを待っているだけなので、何も起こりません。 また、ifステートメントでは、「高さと高さがtypoまたは意図的な場合」と言っていますか? ありがとうございます –

+0

@JakobHansen 'input'はユーザに入力を求める組み込みコマンドです。 'if height'は' get_int'が 'None'を返すことができるので、チェックする必要があります。 –

0

まず、身長を得るためには、hight = raw_input("What is your hight")を使用する必要があります。次に、int(height)を使用して整数として使用できます。第二に、トップダウン処理にする必要があります。

関連する問題