【问题标题】:ASCII spaces and character removalASCII 空格和字符删除
【发布时间】:2015-12-01 17:10:23
【问题描述】:

我必须编写一个程序,它接受三个输入并使用这些输入来确定如何显示由文本文件定义的 ASCII 艺术字字体。我得到的输出几乎是正确的,但是我的程序错误地处理了空格,完全从诸如 HOW DO 之类的东西中省略了它们。 这是我的代码:

hi = input('Height: ')
wi = input('Width: ')
tx = input('Text: ')
hi = int(hi)
output = [[] for _ in range(hi)]
with open("font.txt") as fi:
  lines = fi.readlines()

for character in tx:
  offset = int(cd[character])
  start = offset * hi
  end = start + hi 
  letter = lines[start:end] 
  for outputline, letterline in zip(output, letter):
      outputline.append(letterline.rstrip('\n'))
for line in output:
  print(''.join(line))

还有我的输出

Height: 8
Width: 9
Text: APPLE STORES ARE BAD FOR YOUR HEALTH
 _______  _______  _______  _        _______  _______ _________ _______  _______  _______  _______  _______  _______  _______  ______   _______  ______   _______  _______  _______           _______           _______           _______  _______  _       _________         
(  ___  )(  ____ )(  ____ )( \      (  ____ \(  ____ \\__   __/(  ___  )(  ____ )(  ____ \(  ____ \(  ___  )(  ____ )(  ____ \(  ___ \ (  ___  )(  __  \ (  ____ \(  ___  )(  ____ )|\     /|(  ___  )|\     /|(  ____ )|\     /|(  ____ \(  ___  )( \      \__   __/|\     /|
| (   ) || (    )|| (    )|| (      | (    \/| (    \/   ) (   | (   ) || (    )|| (    \/| (    \/| (   ) || (    )|| (    \/| (   ) )| (   ) || (  \  )| (    \/| (   ) || (    )|( \   / )| (   ) || )   ( || (    )|| )   ( || (    \/| (   ) || (         ) (   | )   ( |
| (___) || (____)|| (____)|| |      | (__    | (_____    | |   | |   | || (____)|| (__    | (_____ | (___) || (____)|| (__    | (__/ / | (___) || |   ) || (__    | |   | || (____)| \ (_) / | |   | || |   | || (____)|| (___) || (__    | (___) || |         | |   | (___) |
|  ___  ||  _____)|  _____)| |      |  __)   (_____  )   | |   | |   | ||     __)|  __)   (_____  )|  ___  ||     __)|  __)   |  __ (  |  ___  || |   | ||  __)   | |   | ||     __)  \   /  | |   | || |   | ||     __)|  ___  ||  __)   |  ___  || |         | |   |  ___  |
| (   ) || (      | (      | |      | (            ) |   | |   | |   | || (\ (   | (            ) || (   ) || (\ (   | (      | (  \ \ | (   ) || |   ) || (      | |   | || (\ (      ) (   | |   | || |   | || (\ (   | (   ) || (      | (   ) || |         | |   | (   ) |
| )   ( || )      | )      | (____/\| (____/\/\____) |   | |   | (___) || ) \ \__| (____/\/\____) || )   ( || ) \ \__| (____/\| )___) )| )   ( || (__/  )| )      | (___) || ) \ \__   | |   | (___) || (___) || ) \ \__| )   ( || (____/\| )   ( || (____/\   | |   | )   ( |
|/     \||/       |/       (_______/(_______/\_______)   )_(   (_______)|/   \__/(_______/\_______)|/     \||/   \__/(_______/|/ \___/ |/     \|(______/ |/       (_______)|/   \__/   \_/   (_______)(_______)|/   \__/|/     \|(_______/|/     \|(_______/   )_(   |/     \|

注意空格(应该与其他字符大小相同)不显示的方式。

【问题讨论】:

  • cd 在哪里定义? [你似乎有一些不必要的初始化程序 - 重复 hi 和不必要的 wi 和 'fi']
  • 这是cd:cd = {'A' : 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25, ' ': 28}
  • 你确定在 font.txt 文件的适当位置有几行空格,print("XXX{}XXX".format(lines[28*hi]))cd 中的 ' ' 索引是 28 而不是 26 的任何原因?

标签: python python-3.x fonts io ascii


【解决方案1】:

对于那些仍在寻找解决方案的人:

for character in tx:
  offset = int(cd[character])
  start = offset * hi
  end = start + hi
  if character == ' ':
    lines[start:end] = [' ' * int(wi) for _ in range(int(hi))]
  letter = lines[start:end]

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多