簡體   English   中英

python Traceback(最近一次調用持續):

[英]python Traceback (most recent call last):

我正在嘗試創建一個猜謎游戲,但遇到一些錯誤,有人可以幫助我嗎?

A = A + [i]
# Define two variables which will be the end point of
# the search span 
mini = 0 
maxi = len(A) - 1 
stepcounter = 1 
find = int(input("Think of a number between 1 and 1000")) 
def guessgame(find, A, mini, maxi, stepcounter): 
    # This calculates the value of the midpoint element 
    # in the list guess = (A[mini] + A[maxi]) // 2 
    if guess == find: 
        return 
        print("You think of", guess, "I did this in", stepcounter, "number of steps") 
    elif guess < find: 
        mini = guess 
        stepcounter = stepcounter + 1 
        guessgame(find, A, mini, maxi, stepcounter) 
    elif guess > find: 
        maxi = guess 
        stepcounter = stepcounter + 1 
        guessgame(find, A, mini, maxi, stepcounter) 
    else: 
        return 
        print("Not in array") 
        guessgame(find, A, mini, maxi, stepc

獵人)

我的錯誤是

traceback most recent call last:
line 34 guessgame(find, a, mini,maxi, supercounter)

File "C:/Users/Acer VN7/PycharmProjects/untitled1/py.py", line 20, in guessgame
if guess == find:
RecursionError: maximum recursion depth exceeded in comparison

您遇到的主要問題是將猜測與其位置混淆。 您將猜測計算為A中值的中點,但隨后將mini或maxi設置為guess ,而不是其位置。 我希望這種混淆會使您的猜測超出二進制搜索范圍,並且您將獲得無限遞歸。

要調試此問題,請添加一些打印語句以跟蹤執行。 例如,函數的第一行應類似於

print find, mini, maxi

然后,當您計算猜測並移動一個端點時,請在退出例程之前打印出這些值。

您似乎已經省略了將值放入A的代碼,所以我完全不確定其中有什么。

除此之外,還存在結構性問題。 返回 ifelse分支后,您將無法獲得代碼。 您根本無法進入else分支,因為前三個分支涵蓋了所有可能性(排除中間法則)。

這會讓你動起來嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM