对于我正在研究的这个项目,我正在编写一种顺序查找四个字母的每个可能组合的方法。我想写一个增加i的循环并将i转换为base 4并替换0,1,2和3。当00不会出现时,我遇到了问题。我想过将i转换为base 5并忽略0每次出现,并替换1,2,3和4。它对我有用,但问题在于效率不高。
这是我现在最好的代码:
import string
digs = string.digits + string.letters
def int2base(x, base):
if x < 0: sign = -1
elif x == 0: return digs[0]
else: sign = 1
x *= sign
digits = []
while x:
digits.append(digs[x % base])
x /= base
if sign < 0:
digits.append('-')
digits.reverse()
return ''.join(digits)
for i in range(0,1000):
x=i
x=int2base(x, 5)
if str(x).count("0")==0:
print(i)
有没有办法可以修复它以便打印它打印的内容,但我只需要将i插入一个函数中? 示例输入和输出
0 -> a
1 -> b
2 -> c
3 -> d
4 -> aa
5 -> ab
6 -> ac
7 -> ad
8 -> ba
9 -> bb
10 -> bc
11 -> bd
12 -> ca
13 -> cb
14 -> cc
15 -> cd
16 -> da
17 -> db
18 -> dc
19 -> dd
20 -> aaa
21 -> aab
答案 0 :(得分:1)
您需要电子表格列号:Get Excel-Style Column Names from Column Number
以下是基于该问题的答案:
digits = 'abcd'
def column(n):
result = []
while n:
n, rem = divmod(n-1, len(digits))
result.append(digits[rem])
return ''.join(reversed(result))
使用时会产生请求的输出:
>>> for i in range(22):
... print i, '->', column(i+1)
...
0 -> a
1 -> b
2 -> c
3 -> d
4 -> aa
5 -> ab
6 -> ac
7 -> ad
8 -> ba
9 -> bb
10 -> bc
11 -> bd
12 -> ca
13 -> cb
14 -> cc
15 -> cd
16 -> da
17 -> db
18 -> dc
19 -> dd
20 -> aaa
21 -> aab
答案 1 :(得分:-1)
模块itertools。
go func() {
for _, ch: = range rx.observers {
ch <-OrderMutation {
order, "create"
}
}
}()
// create a goroutine to send message
func() {
orderManagement.createOrder(order)
}()
select {
case val := <-orderManagement.observers["123"]:
fmt.Println(val)
}
// then receive on the outside like this