python 习题
文件内容为一个多层元组,遍历该元组,当全为数字时输出数字之和,全为字母输出字符串,
有数字有字母输出False,并将该内容写入到该文件的下一行中
# 方法一:
t1= ((1,2,3),("a","b","c"),("a",1,2))
import pickle
with open('D:\\a.txt', 'wb') as f:
pickle.dump(t1,f)
with open('D:\\a.txt', 'rb') as f1:
content = pickle.load(f1) # 用这个方法一参数的形式写入,然后读出来也是参数
tup = tuple(content)
result = []
def func(tup):
for i in tup:
if isinstance(i, tuple):
func(i)
else:
result.append(i)
list1 = list(filter(lambda x:type(x)==int, result))
list2 = list(filter(lambda x:type(x)==str, result))
if len(result) == len(list1):
print(True)
elif len(result) == len(list2):
print(False)
else:
with open('D:\\a.txt', 'a', encoding='utf-8') as f1:
f1.write(str(result))
# 方法2
#分别定义判断元组元素是否全部是数字、字母的函数
import string
def all_digit(arr):
for v in arr:
if not isinstance(v,int):
return False
return True
def all_letter(arr):
for v in arr:
if str(v) not in string.ascii_letters:
return False
return True
#读出文件内容并用eval函数获得原始元组
with open("e:\\python\\a.txt") as file_obj:
content = file_obj.readline()
content = eval(content) # 通过这个方法把读取的到的内容转换为元祖
#遍历元组中的元组,如果都是数字直接求和,并加入结果列表
#如果都是字母拼接成字符串后加入结果列表
#如果都不是False加入结果列表
result = []
for item in content:
if all_digit(item):#("a",1,2)返回False
result.append(sum(item))
elif all_letter(item):#("a",1,2)返回False
result.append("".join(item))
else:
result.append(False)
# print(result)
with open("e:\\python\\a.txt","a+") as file_obj:
file_obj.write("\n" + str(tuple(result)))
file_obj.seek(0,0)
print(file_obj.read())
最新文章
- JAVA中AJAX的使用
- CentOS6.x安装配置nginx
- sencha gridpanel 单元格编辑
- web开发必须知道的javascripat工具
- IDA*
- Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
- $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别(转)
- JS HTML 单引号与双引号
- mysql服务启动
- R的变量类型和常用函数
- OGEngine_2.x中BitmapFont加载后黑屏问题的解决办法
- ROS中使用Kinect摄像头和usb摄像头
- Spring -- <;mvc:annotation-driven />;
- svn版本备份和恢复注意事项
- css预处理器--sass学习($变量名)
- python之数据类型
- [zoj4046][树状数组求逆序(强化版)]
- PTA (Advanced Level) 1027 Colors in Mars
- boost单元测试框架
- 设置第三方的SMTP服务