2016-05-14 4 views
-3

Pythonで全く新しいです。単純なコードを実行しようとします。ユーザーが間違った製品コードを入力すると、エラーメッセージが表示されます。再度入力を促されます。しかし、私はそれを働かせることはできません。誰かが助けてくれる?ありがとうPythonツリーでユーザが間違ったオプションを入力した場合にエラーを返します

class Node(object): 
    def __init__(self,val,key,Number): 
     self.val = val 
     self.key = key 
     self.number = Number 
     self.left = None 
     self.right = None 

def search(value,p): 
    if(p.val == value): 
     print("You bought item:",p.val,",description:", p.key,"cost:", p.number) 
     return 1 
    else: 
     if(p.val !=None): 
      if(p.val < value): 
       search (value,p.right) 
      if(p.val > value): 
       search (value,p.left) 
     else: 
      print("You've entered a wrong option") 

root = Node(3,"Chips", "$12") 
root.left = Node(1,"Chicken", "$13") 
root.left.right = Node(2,"Potato","$14") 
root.right = Node(5,"AisKrim","$15") 
root.right.left = Node(4,"Bag","$16") 
root.right.right = Node(6,"TV","$17") 

option = int(input("Please enter code:")) 
answer = search(option,root) 

while (answer != 1): 
    print("You've entered a wrong option") 
    option = int(input("Please enter code:")) 
    answer = search(option,root) 

答えて

-1

いくつかの問題があります。まず、例外を回避するためにpが検索で定義されていない場合を処理する必要があります。

def search(value,p): 
    if p is None: 
     return None 

検索機能の先頭にそのコードを追加すると、検索が失敗し、あなたが存在しないノードに到達したときに起こる基本的な例外を避けることができます。

第2に、再帰コードは値を返す必要があります。検索機能への各呼び出しは再帰呼び出しから値を返すこと

else: 
    if(p.val !=None): 
     if(p.val < value): 
      return search (value,p.right) 
     if(p.val > value): 
      return search (value,p.left) 
    else: 
     print("You've entered a wrong option") 

注:だからあなたのような何かにelse節を変更する必要があります。

+0

、私は私が投稿し、それが不足している項目について、「あなたは間違ったオプションを入力した」と、見つかった項目のデータを印刷するように細かい仕事をしていた前にちょうどこれらの3行は変更してコードを実行しました。 – djkrause

0

以下の作業コード。ありがとうdjkrause!まあ

class Node(object): 
    def __init__(self,val,key,Number): 
     self.val = val 
     self.key = key 
     self.number = Number 
     self.left = None 
     self.right = None 

def search(value,p): 
    if p is None: 
    return 1 

elif(p.val == value): 
    print("You bought item no:",p.val,", the description", p.key, "and the cost is:", p.number) 
else: 
    if(p.val !=None): 
     if(p.val < value): 
      return search (value,p.right) 
     if(p.val > value): 
      return search (value,p.left) 

root = Node(3,"Chips", "$12") 
root.left = Node(1,"Ayam", "$13") 
root.left.right = Node(2,"Itik","$14") 
root.right = Node(5,"AisKrim","$15") 
root.right.left = Node(4,"Kentang","$16") 
root.right.right = Node(6,"Itik","$17") 

option = int(input("Please enter code:")) 
answer = search(option,root) 

while (answer == 1): 
    print("You've entered a wrong option") 
    option = int(input("Please enter code:")) 
    answer = search(option,root) 
関連する問題