python中的程序帮助

2024-09-30 18:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在实现一个算法,结果是 ['0', '0', '0', '-'] ['0', '0', '-', '0'] ['0', '-', '0', '1'] ['1', '0', '-', '1'] ['1', '1', '0', '-'] ['1', '-', '0', '1'] ['-', '0', '0', '1'] ['-', '1', '0', '1'] ['-', '-', '0', '1']

我想要的是替换每一行中的'-',如果其中有两个'-',则用0或1以及0和1的组合替换它,并在dict()中给出每一个组合的该行的base10值的结尾。你知道吗

这些字符串中这样的'-'的数目根据用户的输入是可变的,因此n'-'的程序将是有用的 如果不是这样的话,这将有助于我找到逻辑。你知道吗


Tags: 字符串用户程序算法结尾逻辑dict数目
2条回答

好吧,我已经完成了困难的部分,希望你能完成它:

tmp = []                                                                        
def recal(_list):                                                                    
    n = []                                                                      
        if '-' in _list:                                                                
        for i in 0,1:                                                           
            t = _list[:]                                                            
            t[t.index('-')] = i                                                 
            n.append(recall(t))                                                   
    else:                                                                       
        tmp.append(l)                                                           
        return l                                                                

recall(['-','-','0','1'])
for l in tmp:
    print int(''.join(l),2)

你的问题描述很难理解。从您的注释中,我猜对于每个要查找二进制值列表的列表,数字可以描述通配符'-'是否替换为1或0。你知道吗

方法如下:

def binvalues(s):
    if '-' in s:
        return (binvalues(s.replace('-', '0', 1))
            + binvalues(s.replace('-', '1', 1)))
    else:
        return [int(s, 2)]

def bindict(q):
    d = {}        
    for i, s in enumerate(q):
        d[i + 1] = binvalues("".join(s))

    return d

print bindict([
    ['0', '0', '0', '-'],
    ['0', '0', '-', '0'],
    ['0', '-', '0', '1'],
    ['1', '0', '-', '1'],
    ['1', '1', '0', '-'],
    ['1', '-', '0', '1'],
    ['-', '0', '0', '1'],
    ['-', '1', '0', '1'],
    ['-', '-', '0', '1']
])

函数bindict处理列表的第一件事就是将其转换为字符串。然后您可以编写一个递归算法,用0和1替换每个-(一次一个,因此replace,1的第二个参数),并在没有通配符时返回一个包含单个数字的列表。转换函数int接受可能的第二个参数,这是基。你知道吗

相关问题 更多 >