【问题标题】:printing for loop output in one line Python 3在一行Python 3中打印循环输出
【发布时间】:2015-02-08 00:22:31
【问题描述】:

我这里有将 ASCII 转换为 Base 64 的代码,输入“Cat”给我输出 基数 64 是 Q 基数 64 是 2 基数 64 是 F 基数 64 为 0

我怎样才能使输出打印在一行上,这样“Cat”就会给出“Base 64 is Q2F0”?

b64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
number = 0
numchar = 0
code = 0

user_input = input("Input")

for char in user_input:
    numchar = numchar + 1
    if numchar == 1:
        number = ord(char)
    elif numchar > 1:
        number = ord(char) + (number << 8)

    if numchar == 3:
        i=3
        for i in (3,2,1,0):
            code = number  >> (6 * i )

#print(int(code))
            print("Yout base64 is "+ b64_table[int(code)])

            number = number - (code  << (6 * i))

【问题讨论】:

  • 您可以在迭代过程中将结果的片段追加到一个字符串中,然后在最后输出最终的字符串。
  • 我真的不明白你为什么不使用base64.encode。
  • @bconstanzo:我真的不明白为什么人们在学习编码时不能尝试了解 base64 的工作原理。

标签: python python-3.x printing line


【解决方案1】:

首先在一个列表中收集你的 base64 字符,然后在循环完成后加入它们并只打印一次你的介绍:

result = []
for i in (3,2,1,0):
    code = number  >> (6 * i )
    result.append(b64_table[int(code)]))
    number = number - (code  << (6 * i))

result = ''.join(result)
print("Your base64 is", result)

这是更有效的方法;另一种较慢的方法是使用字符串连接,将 base64 字符添加到字符串 result:

result = ''
for i in (3,2,1,0):
    code = number  >> (6 * i )
    result += b64_table[int(code)])
    number = number - (code  << (6 * i))

print("Your base64 is", result)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多