Python 如何使用我的号码查找器解决此问题?

Python 如何使用我的号码查找器解决此问题?,python,Python,我正在尝试做一个数字查找器来向一个朋友证明一点,你可以用7个数字找到1-100之间的任何数字,但我不能让它按我想要的方式工作。输出只是一个62个的连续列表,我看不出问题所在。有人能帮忙吗? 这是我的密码- numbers = list(range(0,101)) numbers_to_add_take_away = [25,13,6,3,1,1,1] target = 62 found_number = False def halfing_sequence(): x = 0

我正在尝试做一个数字查找器来向一个朋友证明一点,你可以用7个数字找到1-100之间的任何数字,但我不能让它按我想要的方式工作。输出只是一个62个的连续列表,我看不出问题所在。有人能帮忙吗? 这是我的密码-

numbers = list(range(0,101))
numbers_to_add_take_away = [25,13,6,3,1,1,1]
target = 62

found_number = False

def halfing_sequence():
    x = 0
    mid = 50
    half = int(numbers[mid])
    if mid == target:
        print('Match!')
        found_number = True
        quit()
    elif target > half:
        mid = int(mid + (numbers_to_add_take_away[x]))
    elif target < half:
        mid = int(mid - (numbers_to_add_take_away[x]))
    x = x + 1
    print(mid)


while found_number == False:
    halfing_sequence()
编号=列表(范围(0101)) 数字加起来等于[25,13,6,3,1,1,1] 目标=62 已找到\u编号=False def半成品序列(): x=0 中=50 一半=整数(数字[中间]) 如果mid==目标: 打印('Match!') 已找到\u编号=真 退出 elif目标>一半: mid=int(mid+(数字加上带走[x])) elif目标<一半: mid=int(mid-(数字加上带走[x])) x=x+1 打印(中) 当找到时\u number==False: 半分法_序列()
非常感谢您提供的帮助

x
从未更改,而且每次调用函数时,它们都会重置为0和50。一种解决方案是生成函数的x和mid参数,并使用递归再次调用函数,直到找到解决方案

numbers = list(range(0,101))
numbers_to_add_take_away = [25,13,6,3,1,1]
target = 62

found_number = False

def halfing_sequence(x, mid):
    half = int(numbers[mid])
    if mid == target:
        print('Match!')
        quit()
    elif target > half:
        mid = int(mid + (numbers_to_add_take_away[x]))
    elif target < half:
        mid = int(mid - (numbers_to_add_take_away[x]))
    x = x + 1
    print(x)
    print(mid)
    halfing_sequence(x, mid)


x=0
mid=50
halfing_sequence(x=0, mid=50)
编号=列表(范围(0101)) 数字加起来等于[25,13,6,3,1,1] 目标=62 已找到\u编号=False def对半顺序(x,mid): 一半=整数(数字[中间]) 如果mid==目标: 打印('Match!') 退出 elif目标>一半: mid=int(mid+(数字加上带走[x])) elif目标<一半: mid=int(mid-(数字加上带走[x])) x=x+1 打印(x) 打印(中) 对半排列顺序(x,中间) x=0 中=50 对半排列顺序(x=0,mid=50)
您需要在您的函数
对半序列
之外初始化
x
mid
,然后您可以将它们与关键字
全局
一起使用:

numbers = list(range(0,101))
numbers_to_add_take_away = [25,13,6,3,1,1]
target = 62

found_number = False
x = 0
mid = 50

def halfing_sequence():
    global x, mid
    half = int(numbers[mid])
    if mid == target:
        print('Match!')
        found_number = True
        quit()
    elif target > half:
        mid = int(mid + (numbers_to_add_take_away[x]))
    elif target < half:
        mid = int(mid - (numbers_to_add_take_away[x]))
    x = x + 1
    print(mid)

while found_number == False:
    halfing_sequence()

你能用一个与你的问题相关的标题来编辑你的问题吗?你应该编辑你的标题,使它与你的问题相关,向我们展示你的算法得到的输出,以及所需的输出。那么
数字添加和带走的目的是什么
?你能解释一下代码的作用吗?一下子就犯了几个错误。halfing_sequence()从不返回任何内容。发现主线程中的\u编号永远不为真。因为在函数调用中x和mid总是设置为相同的值,所以在对半序列中,您只需执行一步。@SterlingArcher感谢您通知我,我已按要求进行了更改
75
62
Match!