【问题标题】:align columns of letters?对齐字母列?
【发布时间】:2014-10-29 22:04:20
【问题描述】:

这只是我的代码的一部分,但我在对齐它时遇到了麻烦 我希望它以以下方式打印输出:

N a m e
1 2 3 4

现在它做了这样的事情:

['J', 'o', 'h', 'n', ' ', 'S', 'm', 'i', 't', 'h']
['[', '1', ',', ' ', '6', ',', ' ', '8', ',', ' ', '5', ',', ' ', '1', ',', ' ', '4', ',', ' ', '9', ',', ' ', '2', ',', ' ', '8', ']']

提醒一下,我还是 python 新手哈哈

print("Your name and numeric value is:")
fullname = first_name + " " + last_name
print(list(fullname))

name = first_name + last_name
name = str.lower(name)
output = []
for letter in name:
    number = (ord(letter) - 97)%9 + 1
    output.append(number)
print(list(str(output)))

【问题讨论】:

  • 那是什么问题?
  • @Kasra 我想将每个字母对齐到列中,以便第一行和第二行是统一的
  • 你能添加更清晰的输入和期望输出吗?
  • 你能告诉我们现在正在打印什么吗?
  • 我对其进行了编辑以显示前任。输出

标签: python alignment


【解决方案1】:

使用 .join 字符串方法:

姓名 = 名字 + 姓氏

name = str.lower(name)

输出 = ' '.join(name)

方法前的“”表示将要连接的部分。在这种情况下,空格。

如果名称在哪里['j','h','o','n'],这将返回j h o n

【讨论】:

    【解决方案2】:

    这个怎么样:

    first_name = 'Foo'
    last_name = 'Bar'
    
    print("Your name and numeric value is:")
    fullname = first_name + ' ' + last_name
    print(' '.join(fullname))
    
    fullname = str.lower(fullname)
    output = ''
    for letter in fullname:
        if letter == ' ':
            output += '  '
        else:
            number = (ord(letter) - 97)%9 + 1
            output += str(number) + ' '
    print(output)
    

    输出:

    F o o   B a r
    6 6 6   2 1 9 
    

    【讨论】:

      【解决方案3】:

      代替:

      print(list(fullname))
      

      用途:

      print(''.join('%3s' % c for c in fullname))
      

      而不是:

      print(list(str(output)))
      

      用途:

      print(''.join('%3s' % n for n in output))
      

      这样,您将获得带有 2 个空格且右对齐的所有内容,即使数字有多个数字也是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-02
        • 2020-04-28
        • 2011-05-20
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多