Python ASCII字符计数
我必须用Python编写一个程序,提示用户输入文本,然后用嵌套循环将该文本与ASCII字符串(所有ASCII字符)进行比较Python ASCII字符计数,python,ascii,Python,Ascii,我必须用Python编写一个程序,提示用户输入文本,然后用嵌套循环将该文本与ASCII字符串(所有ASCII字符)进行比较 ascii_string= """!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~""" user_text=input("Enter a text to analyze: ") for character
ascii_string= """!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"""
user_text=input("Enter a text to analyze: ")
for character in (user_text):
total_count= len(user_text)
for user_text in (ascii_string):
ascii_count=len(user_text)
print("Total number of characters: ", total_count)
print("Total number of ASCII characters: ", ascii_count)
print("Total number of non-ASCII characters: ", total_count-ascii_count)
ascii_string=“”!“#$%&\'()*+,-./0123456789:@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^`ABCDEFGHIJKLMNOPQRSTUVWXYZ{124;}~”
用户\文本=输入(“输入要分析的文本:”)
对于中的字符(用户\文本):
总计数=长度(用户文本)
对于用户文本(ascii字符串):
ascii\u count=len(用户\u文本)
打印(“字符总数:”,总计数)
打印(“ASCII字符总数:”,ASCII_计数)
打印(“非ASCII字符总数:”,总计数-ASCII计数)
是的,您确实使用了不合适的算法。对于输入字符串中的每个字符,您保存了整个输入字符串的长度,然后查看ASCII字符串中的每个字符并保存了整个输入字符串的长度。再次
相反,通过将生成器传递给sum()
,将“is in the ASCII string”的所有布尔值相加,这将相加所有这些布尔值(True
is1
和False
is0
):
ascii\u string=set(“!”、-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ` abcdefghijklmnopqrstuvxyz{124;}~”)
用户\文本=输入(“输入要分析的文本:”)
总计数=长度(用户文本)
ascii\u计数=总和(用户文本中c的ascii\u字符串中的c)
打印(“字符总数:”,总计数)
打印(“ASCII字符总数:”,ASCII_计数)
打印(“非ASCII字符总数:”,总计数-ASCII计数)
是的,您确实使用了不合适的算法。对于输入字符串中的每个字符,保存整个输入字符串的长度,然后查看ASCII字符串中的每个字符并保存整个输入字符串的长度。再说一遍
相反,通过将生成器传递给sum()
,将“is in the ASCII string”的所有布尔值相加,这将相加所有这些布尔值(True
is1
和False
is0
):
ascii\u string=set(“!”、-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ` abcdefghijklmnopqrstuvxyz{124;}~”)
用户\文本=输入(“输入要分析的文本:”)
总计数=长度(用户文本)
ascii\u计数=总和(用户文本中c的ascii\u字符串中的c)
打印(“字符总数:”,总计数)
打印(“ASCII字符总数:”,ASCII_计数)
打印(“非ASCII字符总数:”,总计数-ASCII计数)
更好、更简单、更快的方法:
>>>s=“asdmlfjkèè&-è”
>>>ascii_count=len(s.encode(“ascii”、“忽略”))
>>>ascii_计数
12
更好、更简单、更快的方法:
>>>s=“asdmlfjkèè&-è”
>>>ascii_count=len(s.encode(“ascii”、“忽略”))
>>>ascii_计数
12
您能给出一个示例输入和一个示例输出吗?这是程序运行的示例。输入要分析的文本:让我们去咖啡馆!字符总数:18 ASCII字符总数:16非ASCII字符总数:2您能给出一个示例输入和示例输出吗?这是一个示例ru程序的nning。输入要分析的文本:让我们去咖啡馆吧!字符总数:18个ASCII字符总数:16个非ASCII字符总数:2我也将ASCII\u字符串
转换为集
,因为我们只测试成员资格。不管怎样,它都是唯一的字符,所以我们所获得的只是以创建哈希表为代价的更快的查找(我想?不确定)。我想性能的提高(如果有的话)取决于用户输入字符串的大小。看起来确实更快。如果我们需要进行数千或数百万的成员资格测试,ascii_string=set(ascii_string)
将是一个很好的优化。@dursk-为您将其更改为集
。我也将ascii_字符串
转换为集
,因为我们只测试成员资格。好吧,反正都是唯一字符,所以我们得到的只是更快的查找(我想?不确定)以创建哈希表为代价。我想性能的提高(如果有的话)取决于用户输入字符串的大小。看起来确实更快。如果我们需要进行数千或数百万次成员资格测试,ascii\u string=set(ascii\u string)
将是一个很好的优化。@dursk-为您将其更改为set
。
ascii_string = set("""!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~""")
user_text = input("Enter a text to analyze: ")
total_count = len(user_text)
ascii_count = sum(c in ascii_string for c in user_text)
print("Total number of characters:", total_count)
print("Total number of ASCII characters:", ascii_count)
print("Total number of non-ASCII characters:", total_count-ascii_count)