我是Python的新手。尝试创建一个简单的函数,通过dict值将字符串输入转换为盲文(“1”表示凹凸,0表示没有凹凸)。
我确信有更快/更好的方法来做到这一点,但我所拥有的几乎正在工作(另一种方式说它根本不起作用)。
alphabet = {
'a': '100000','b': '110000','c': '100100','d': '100110'
#etc
}
def answer(plaintext):
for i in str(plaintext):
for key, value in alphabet.iteritems():
if i in key:
print value,
answer('Kiwi')
打印:
000001101000 010100 010111 010100
我的问题是如何删除空格?我需要它打印为:
000001101000010100010111010100
它是作为元组打印所以我不能使用.strip()。
答案 0 :(得分:1)
对于我考虑的pythonic方式:
def answer(plaintext):
alphabet = { ... }
return "".join([alphabet[c] for c in plaintext])
(这假设plaintext
中的所有字母都在alphabet
)
答案 1 :(得分:0)
brail = []
for i in str(...):
if alphabet.get(i):
brail.append(alphabet[i])
print ''.join(brail)
答案 2 :(得分:0)
在函数的第一行中,创建一个容器l=[]
。将循环中的最后一个语句更改为l.append(value)
。在循环外部,但仍在函数内部,执行return ''.join(l)
。现在应该工作。
答案 3 :(得分:0)
您可以像join()
这样使用generator
:
alphabet = {'a': '100000','b': '110000','c': '100100','d': '100110'}
def answer(a = ''):
for i in a:
for key, value in alphabet.iteritems():
if i in key:
yield value
print ''.join(answer('abdaac'))
输出:
>>> 100000110000100110100000100000100100
答案 4 :(得分:0)
在Python中操作打印的一种方法是使用end参数。默认情况下,它是换行符。
print("foo")
print("bar")
会像这样打印:
foo
bar
为了使这两个语句在同一行上打印,我们可以这样做:
print("foo",end='')
print("bar",end='')
这将打印如下:
foobar
希望这是解决此类问题的有效方法。