2013-10-19 36 views
-1

喜在這條路上我的程序打印:如何在形式上水平的蟒紋

Mesagge二進制:ASD

01100001 
01110011 
01100100 

,但我需要在形式上水平像這樣(011000010111001101100100)

打印的郵件

我一直在嘗試一切,我不知道該怎麼做。

def string_a_binario(s): 

    for i in range (0, len(s)): 

     if s[i] == " " : 
      print("00100001") 
     elif s[i] == "!" : 
      print("00100001") 

     elif s[i] == "#" : 
      print("00100011") 
     elif s[i] == "$" : 
      print("00100100") 
     elif s[i] == "%" : 
      print("00100101") 
     elif s[i] == "&" : 
      print("00100110") 
     elif s[i] == "'" : 
      print("00100111") 
     elif s[i] == "(" : 
      print("00101000") 
     elif s[i] == ")" : 
      print("00101001") 
     elif s[i] == "*" : 
      print("00101010") 
     elif s[i] == "+" : 
      print("00101011") 
     elif s[i] == "," : 
      print("00101100") 
     elif s[i] == "-" : 
      print("00101101") 
     elif s[i] == "." : 
      print("00101110") 
     elif s[i] == "/" : 
      print("00101111") 
     elif s[i] == "0" : 
      print("00110000") 
     elif s[i] == "1" : 
      print("00110001") 
     elif s[i] == "2" : 
      print("00110010") 
     elif s[i] == "3" : 
      print("00110011") 
     elif s[i] == "4" : 
      print("00110100") 
     elif s[i] == "5" : 
      print("00110101") 
     elif s[i] == "6" : 
      print("00110110") 
     elif s[i] == "7" : 
      print("00110111") 
     elif s[i] == "8" : 
      print("00111000") 
     elif s[i] == "9" : 
      print("00111001") 
     elif s[i] == ":" : 
      print("00111010") 
     elif s[i] == ";" : 
      print("00111011") 
     elif s[i] == "<" : 
      print("00111100") 
     elif s[i] == "=" : 
      print("00111101") 
     elif s[i] == ">" : 
      print("00111110") 
     elif s[i] == "?" : 
      print("00111111") 
     elif s[i] == "@" : 
      print("01000000") 
     elif s[i] == "A" : 

      print("01000001") 
     elif s[i] == "B" : 
      print("01000010") 

     elif s[i] == "C" : 
      print("01000011") 

     elif s[i] == "D" : 
      print("01000100") 
     elif s[i] == "E" : 
      print("01000101") 
     elif s[i] == "F" : 
      print("01000110") 
     elif s[i] == "G" : 
      print("01000111") 
     elif s[i] == "H" : 
      print("01001000") 
     elif s[i] == "I" : 
      print("01001001") 
     elif s[i] == "J" : 
      print("01001010") 
     elif s[i] == "K" : 
      print("01001011") 
     elif s[i] == "L" : 
      print("01001100") 
     elif s[i] == "M" : 
      print("01001101") 
     elif s[i] == "Ñ" : 
      print("01001110") 
     elif s[i] == "O" : 
      print("01001111") 
     elif s[i] == "P" : 
      print("01010000") 
     elif s[i] == "Q" : 
      print("01010001") 
     elif s[i] == "R" : 
      print("01010010") 
     elif s[i] == "O" : 
      print("01001111") 
     elif s[i] == "P" : 
      print("01010000") 
     elif s[i] == "Q" : 
      print("01010001") 
     elif s[i] == "R" : 
      print("01010010") 
     elif s[i] == "S" : 
      print("01010011") 

     elif s[i] == "T" : 
      print("01010100") 
     elif s[i] == "U" : 
      print("01010101") 
     elif s[i] == "V" : 
      print("01010110") 
     elif s[i] == "W" : 
      print("01010111") 
     elif s[i] == "X" : 
      print("01011000") 
     elif s[i] == "Y" : 
      print("01011001") 
     elif s[i] == "Z" : 
      print("01011010") 

     elif s[i] == "[" : 
      print("01011011") 
     elif s[i] == " \ " : 
      print("01011100") 
     elif s[i] == "]" : 
      print("01011101") 
     elif s[i] == "^" : 
      print("01011110") 
     elif s[i] == "_" : 
      print("01011111") 
     elif s[i] == "`" : 
      print("01100000") 


     elif s[i] == "a" : 
      print("01100001") 
     elif s[i] == "b" : 
      print("01100010") 
     elif s[i] == "c" : 
      print("01100011") 
     elif s[i] == "d" : 
      print("01100100") 
     elif s[i] == "e" : 
      print("01100101") 
     elif s[i] == "f" : 
      print("01100110") 
     elif s[i] == "g" : 
      print("01100111") 
     elif s[i] == "h" : 
      print("01101000") 
     elif s[i] == "i" : 
      print("01101001") 
     elif s[i] == "j" : 
      print("01101010") 
     elif s[i] == "k" : 
      print("01101011") 
     elif s[i] == "l" : 
      print("01101100") 
     elif s[i] == "m" : 
      print("01101101") 
     elif s[i] == "n" : 
      print("01101110") 
     elif s[i] == "o" : 
      print("01101111") 
     elif s[i] == "p" : 
      print("01110000") 
     elif s[i] == "q" : 
      print("01110001") 
     elif s[i] == "r" : 
      print("01110010") 
     elif s[i] == "s" : 
      print("01110011") 
     elif s[i] == "t" : 
      print("01110100") 
     elif s[i] == "u" : 
      print("01110101") 
     elif s[i] == "v" : 
      print("01110110") 
     elif s[i] == "w" : 
      print("01110111") 
     elif s[i] == "x" : 
      print("01111000") 
     elif s[i] == "y" : 
      print("01111001") 
     elif s[i] == "z" : 
      print("01111010") 
     elif s[i] == "{" : 
      print("01111011") 
     elif s[i] == "|" : 
      print("01111100") 
     elif s[i] == "}" : 
      print("01111101") 
     elif s[i] == "~" : 
      print("01111110") 

s = list(input("Message to binary:")) 
string_a_binario(s) 
+0

\'''''''''''''''''四個空格代碼塊縮進。 –

+2

太多,如果陳述 –

+2

我可以看到op正在努力解決問題,爲什麼要投票? – Mai

回答

1

說我有兩個串s1s2

import sys 
sys.stdout.write(s1) 
sys.stdout.write(s2) 
sys.stdout.write('\n') 
sys.stdout.flush() 

然後S1和S2將在同一行中打印。

希望它能幫助:)

+0

Whatis s1和s2我不知道你能寫它 – Felipe

+1

@Felipe他只是說:「說我有兩個字符串's1'和's2'」 –

3

對於多行的問題,如果你在一個print聲明的末尾加上一個逗號(,),它不會打印一個換行符:

例子:

print 'Put these on', 
print 'just one line', 
print 'please' 

打印:

Put these on just one line please 

注意:這仍然會在每個項目之後打印空格。如果這是不可接受的,請使用sys.stdout.write(),如Mai showed


還有就是要做到這一點不是硬編碼的所有情況下都能更好的辦法! (我無法想象花了多長時間你寫!)

提示:

其他Python提示:

  • 沒有必要將input的結果轉換爲list - python中的字符串是可迭代的。

  • 這不是C--你不需要迭代數組索引。相反,您可以按順序遍歷每個項目。在這裏,這些項目是字符串的每個字符!

for i in range (0, len(s)): 
    if s[i] == " " : 
     ... 

可與

for x in s: 
    is x == " ": 
     ... 
+1

這是否在python 3中工作? – Leonardo

+0

@Leonardo我不確定。我相信'print'現在是一個功能,所以它可能不會 - 我必須去查看它。 –

0

我只是想解決你怎麼寫你的函數被替換,它可能會產生一些錯誤。例如,看看你的循環中前兩個if語句,看起來好像空格和!這兩個字符都輸出00100001,那是需要的嗎?這裏有些類似於你的功能,可能會帶來一些人爲錯誤。

def string_a_binario(s): 
    for i in range(len(s)): 
     sys.stdout.write("{0:08b}".format(ord(s[i]))) 

此代碼還可以根據需要水平寫入。但是,它並沒有像你的函數那樣對所有輸入做同樣的事情。例如,如果沒有任何條件滿足,您的代碼將不會打印任何內容,而此功能可能會打印出您無法打印的內容。

在Python 3(也許以前的版本,我不肯定的),你可以告訴打印不包括換行符,這裏是函數的另一個版本:

def string_a_binario(s): 
    for i in range(len(s)): 
     print("{0:08b}".format(ord(s[i])), end='') 

這裏是另一個版本python 3在每個二進制表示中放置一個括號:

def string_a_binario(s): 
    for i in range(len(s)): 
     print("[{0:08b}".format(ord(s[i])), end=']')