原题链接
题目描述
写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。
输入格式
四行字符,由大写字母组成,每行不超过100个字符
输出格式
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。
输入输出样例
输入 #1
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
输出 #1
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
说明/提示
每行输出后面不允许出现多余的空格。
代码实现
count_letters = [0 for i in range(26)]
for i in range(4):
s = input()
for j in s:
if j >= 'A' and j <= 'Z':
count_letters[ord(j)-ord('A')] += 1
peak = max(count_letters)
for i in range(peak):
for j in range(26):
if count_letters[j] == peak:
print("*", end="")
count_letters[j] -= 1
if max(count_letters) == peak:
print(" ", end="")
else:
if max(count_letters) == peak:
print(" ", end=" ")
print()
peak -= 1
for i in range(26):
if i != 25:
print(chr(i+ord('A')), end=" ")
else:
print(chr(i+ord('A')), end="")
这道题有一点没说清楚,坑了俺大半个晚上——题目说的是用柱状图输出每个字符在输入文件中出现的次数。我一开始加了个列表用来顺序存放出现过的字符,结果发现评测始终不对,持续WA,最后试着把所有大写字母(即使没在输入文件里读取到它)都输出在最后一行,结果一遍AC了。。。