-1

こんにちは、私のプログラムはこの方法で印刷します:

バイナリへのメッセージ: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)
4

3 に答える 3

3

,複数行の問題については、ステートメントの最後にコンマ ( ) を配置するprintと、改行文字が出力されません。

例:

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

版画:

Put these on just one line please

注: これでも、各項目の後にスペースが出力されます。それが受け入れられない場合は、舞が示しsys.stdout.write()たように使用してください。


これを実現するには、すべてのケースをハードコーディングするよりもはるかに優れた方法があります。(あなたがそれを書くのにどれくらいの時間がかかったのか想像できません!)

ヒント:

その他の python ヒント:

  • inputの結果を aに変換する必要はありませんlist- Python の文字列は反復可能です。

  • これは C ではありません。配列インデックスを反復処理する必要はありません。代わりに、シーケンス内の各項目を反復できます。ここで、それらの項目は文字列の各文字です!

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

と交換可能

for x in s:
    is x == " ":
        ...
于 2013-10-19T19:40:46.697 に答える
1

私は2つの文字列s1とを持っているとしましょうs2:

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

次に、s1 と s2 が同じ行に出力されます。

それが役に立てば幸い:)

于 2013-10-19T19:39:51.910 に答える
0

関数の作成方法に対処したいだけです。エラーが発生する可能性があります。たとえば、ifループの最初の 2 つのステートメントを見てください。スペースと!文字の両方が出力00100001されているように見えますが、それは望ましいことでしたか? これは、関数に似たものであり、潜在的に人的エラーを発生させるものです。

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

このコードは、必要に応じて水平方向にも書き込みます。ただし、すべての入力に対して関数と同じことを行うわけではありません。たとえば、条件がまったく満たされない場合、コードは何も出力しませんが、この関数は、あなたのコードでは出力できないものを出力する可能性があります。

Python 3 (およびおそらく以前のバージョンでは、確かではありません) では、print に改行を含めないように指示できます。関数の別のバージョンを次に示します。

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=']')
于 2013-10-19T20:12:12.650 に答える