【发布时间】:2019-06-01 14:19:29
【问题描述】:
我必须生成给定字符串的所有可能的二进制表示,其中一些字符是“?”其他为 1 或 0。
我正在尝试进行递归搜索,但遇到了一些我无法弄清楚的奇怪问题。
userInput = list(input())
anslist = []
def fill(inp):
#print(inp)
if inp.count("?") == 0:
print(inp, "WAS ADDED")
anslist.append(inp)
return
for a in range(0, len(userInput)):
if inp[a] == "?":
inp[a] = 1
fill(inp)
inp[a] = 0
fill(inp)
return
print(anslist)
对于输入 ?01?1 我应该得到: 00101、00111、10101 和 10111 但我明白了 10111 10101 00101 打印出来。此外,anslist 无法正常工作。我似乎无法弄清楚这一点。
【问题讨论】:
-
使用 python itertools.product 为 all 生成 1 和 0 的所有组合?位置并一一分配给数组并推送到anslist
-
如果你不想使用 itertools.product 你可以使用嵌套循环(对于固定数量的位置)或更一般的递归
-
我不想使用内置工具。另外,我不知道元素的数量(=循环的数量),所以递归是要走的路。
-
@PatrickArtner 不,我是来学习的。