基本要求:
●输入一串字符,计算总个数,并提取出其中的小写字母、大写字母、数字、其它字符,然后分别将它们以及它们的个数打印出来。
例如,输入'ok? 123Yes', 则程序打印出(注:形式不局限于如下所示):
共 10 个字符
小写 4 个: okes
大写 1 个: Y
数字 3 个: 123
其它 2 个: ?
高级要求:
●将这串字符存成两个文本文件,其中第一个文件(文件名自取,扩展名为 txt),其文本内容即为上述显示的字符;另一个文件(文件名自取,扩展名为 txt),是将上述这串字符(按照 ASCII 码)转成无符号整型(uint8)数组,将该整型数组存成的显示内容相同的文本(即直接打开该文本,显示内容就为该整型数组);
●再对上述无符号整型数组求其最大值、最小值、均值,并打印。
import numpy as np
def Cal(user_input):
def isnumer(s):
return all(c in "0123456789" for c in s)
int_Count = 0 # 用来记录列表中的数字个数
i_count = []
strs_Count = 0 # 记录大写字母个数
ss_count = []
strl_Count = 0 # 记录小写字母个数
sl_count = []
other_Count = 0 # 记录其他字符个数
o_count = []
a = user_input
# 使用for循环遍历字符串,每次循环判断当前获取的元素的类型,并给对应计数器计数
count = 0
for i in a:
if i.isupper(): # 判断i是不是大写字母
strs_Count += 1
ss_count.append(i)
elif i.islower(): # 判断i是不是小写字母
strl_Count += 1
sl_count.append(i)
elif isnumer(i): # 判断i是否为数字
i_count.append(i)
int_Count += 1
else:
other_Count += 1
o_count.append(i)
count += 1
print ("字符总个数为{},数字个数为{},分别是{},大写字母个数为{},分别是{},小写字"
"个数为{},分别是{}, 其他个数为{}, 分别是{}" .format(count, int_Count, i_count, strs_Count, ss_count, strl_Count, sl_count, other_Count, o_count))
# 将文本内容存储为str.txt文件
with open("str.txt", "w") as s:
s.write(user_input)
# 将这串字符转化成无符号整型(uint8)
numlist = []
for i in a:
numlist.append(ord(i))
# 将这串字符转化成无符号整型(uint8)存储到str_num.txt
numlist_str = str(numlist)
with open("str_num.txt", "w") as n:
n.write(numlist_str)
numlist_max = np.max(numlist)
# print(numlist_max)
numlist_min = np.min(numlist)
numlist_mea = np.mean(numlist)
print("无符号整型数组最大值{},最小值{},均值{}".format(numlist_max, numlist_min, numlist_mea))
if __name__ == "__main__":
user_input = input("请输入一串字符:")
Cal(user_input)
课程上机任务小练习
如有不足 多多指教