首页 > 编程语言 > 详细

python 习题

时间:2019-11-07 00:27:06      阅读:110      评论:0      收藏:0      [点我收藏+]

文件内容为一个多层元组,遍历该元组,当全为数字时输出数字之和,全为字母输出字符串,
有数字有字母输出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())

python 习题

原文:https://www.cnblogs.com/su-sir/p/11809282.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!