2017-03-20 72 views
0

我是Python新手。試圖做一個簡單的函數,通過字典值將字符串輸入轉換成盲文('1'表示凹凸和0無凹凸)。Python打印for循環時如何刪除空格?

我敢肯定,有更快/更好的方法來做到這一點,但我所擁有的幾乎工作(另一種說法是根本不起作用的方式)。

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()。

+1

http://stackoverflow.com/questions/255147/how-do-i-keep-python-print-from-adding-newlines-or-spaces – user1952500

+0

可能的重複[如何保持Python打印不添加換行符或空格?](http://stackoverflow.com/questions/255147/how-do-i-keep-python-print-from-adding-newlines-or-spaces) – Cecilia

回答

1

爲了什麼我會考慮一個Python的方式:

def answer(plaintext): 
    alphabet = { ... } 
    return "".join([alphabet[c] for c in plaintext]) 

(假定在plaintext所有的字母都在alphabet

+0

非常感謝!這工作完美。我明白通過每個c以明文形式循環,並且字典值沒有空格地加入,但是你能簡要地解釋其餘的工作 - 特別是字母表[c]嗎? – Stu

+0

''alphabet''是一個字典,所以'alphabet' [c]'是我明白的明文 – marisbest2

+0

中該字母的編碼。再次感謝。 – Stu

0
brail = [] 
for i in str(...): 
    if alphabet.get(i): 
    brail.append(alphabet[i]) 
print ''.join(brail) 
0

在函數的第一行,創建一個容器l=[] .Change環路內最後一條語句來l.append(value) .Outside的循環,但仍然在函數內部,做return ''.join(l)。現在應該工作。

+0

謝謝。這工作完美。 – Stu

0

您可以在generator內使用join()像這樣:

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 
0

在Python中操作打印的一種方法是使用結束參數。默認情況下它是一個換行符。

print("foo") 
print("bar") 

將打印這樣的:

foo 
bar 

爲了使這兩個報表打印在同一行,我們可以這樣做:

print("foo",end='') 
print("bar",end='') 

這將打印這樣的:

foobar 

Hopeful這是解決諸如此類問題的有效方法。