使用 input 设置所有字符的列表。使用列表长度检查并用相应的值替换所有字符

Use input to set a list of all characters. Use list length to check & replace all characters with corresponding value

我正在编写一个转换代码,需要接受用户输入并将字符串拆分为 each/all 个字符的列表。我想将变量值设置为列表的长度并检查每个项目是否存在。为此,我的代码是...

txtIn = str(input('Enter string: '))
s = list(txtIn)
l = len(s)

我也有一个字典集如下.. binNum = { '1': '1', '2': '10', '3': '11' }

我想做的是使用长度检查用户设置列表的每个值,以更改每个字符的值。我希望它的外观是用户输入:123。它将检查创建的列表中的“1”,然后将其替换为相应的值。一旦找到并替换了前一个字符,它将检查下一个字符 ('2')。我是否正确地认为我必须设置某种临时变量来保存比较值并在之后传递该值?

无需任何临时变量即可轻松完成:

txtIn = input('Enter string: ')
binNum = { '1': '1', '2': '10', '3': '11' }

print(''.join([binNum.get(x, x) for x in txtIn]))

这使用带有字典 get 的列表理解来获取对应的值,然后 join


对于真正的二进制转换,您可以使用 formatf 字符串:

txtIn = int(input('Enter string: '))

print("{0:b}".format(txtIn))
# or print(f'{txtIn:b}')

OP 需要真正的二进制转换,而不是 BCD 转换。本答案提供BCD转换。

这是一个使用内置str.translate方法的方法。

binNum = { '1': '1', '2': '10', '3': '11' }
translationTable = {ord(ch): result for ch, result in binNum.items()}
txtIn = input('Enter string: ')
txtOut = txtIn.translate(translationTable)
print(txtOut)