我显然对python很陌生。因此,我为我的作业写的代码给了我正确的输出,然而,它只是伤害你的眼睛看。所以我想知道有没有办法让代码更紧凑?你知道吗
这是我的密码:
import sys
period_count = 0
excl_count = 0
quest_count = 0
colon_count = 0
dquote_count = 0
comma_count = 0
scolon_count = 0
slash_count = 0
bslash_count = 0
lparen_count = 0
rparen_count = 0
quote_count = 0
for line in sys.stdin:
for char in line:
if char == ".":
period_count = period_count + 1
if char == "!":
excl_count = excl_count +1
if char == "?":
quest_count = quest_count +1
if char == ":":
colon_count = colon_count +1
if char == "\"":
dquote_count = dquote_count +1
if char == ",":
comma_count = comma_count +1
if char == ";":
scolon_count = scolon_count +1
if char == "/":
slash_count = slash_count +1
if char == "\\":
bslash_count = bslash_count +1
if char == "(":
lparen_count = lparen_count +1
if char == "(":
rparen_count = rparen_count +1
if char == "'":
quote_count = quote_count +1
print("{0} {1:>3} {0:>4} {2:>5} {0:>4}".format("|", "mark", "number"))
print("{0} {1} {0} {2} {0}".format("|", "_______", "_________"))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", ".", period_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "!", excl_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "?", quest_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", ":", colon_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "\"", dquote_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", ",", comma_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", ";", scolon_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "/", slash_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "\\", bslash_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "(", lparen_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", ")", rparen_count))
print("{0} {1:>3} {0:>5} {2:>5} {0:>5}".format("|", "'", quote_count))
任务是分别计算每个标点符号,并将这些符号和结果打印在一张表格中。你知道吗
任何帮助都将不胜感激!你知道吗
您可以对字符串进行哈希运算,并将理解归功于tobias\u k:
编辑
根据评论中与Chris\u Rands的对话,如果作业只是简单地计算所有标点符号,那么我建议稍微更改以上内容:
其余如下。
string.punctuation
在我的机器上是'!"#$%&'()*+,-./:;<=>?@[\]^_{|}~'
(根据文档,设置是基于区域设置的)。你知道吗最终更新
感谢Muposat提醒我defaultdict:当
0
是int
构造函数的默认值时,无需初始化键和计数器:这个较短的版本将使用内置类
collections.Counter
统计所有字符频率,并打印所需的频率(包括原始表格格式):或者一句话里有同样的想法,只是为了好玩:
相关问题 更多 >
编程相关推荐