# -*- coding: utf-8 -*-
'''
Created on 2020年1月31日
@author: guzl86
1. 提示用户输入自己的名字、年龄、身高,并将该用户信息以 JSON 格式保存在文件中。再
写一个程序读取刚刚保存的 JSON 文件,恢复用户输入的信息 。
'''
import json
if __name__ == '__main__':
info = {}
info['name'] = input('请输入您的姓名:')
info['age'] = input('请输入您的年龄:')
info['height'] = input('请输入您的身高:')
fp = open("10-1.dat",'w')
json.dump(info, fp)
fp.close()
info1 = {}
fp1 = open("10-1.dat",'r')
info1 = json.load(fp1)
fp1.close()
print(info1)
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年1月31日
@author: guzl86
2. 给定一个字符串,该宇符串只包含数字 O~9 、英文逗号、英文点号,请使用英文逗号、英
文点号将它们分割成多个子串 。
知识点:
1.re.fullmatch(pattern, string, flags=0):
该函数要求整个字符串能匹配pattern,如果匹配则返回包含匹配信息的
_sre.SRE_Match对象;否则返回None
2.re.split(pattern, string, maxsplit=0, flags=0):
使用pattern对string进行分割,该函数返回分割得到的多个子串组成的列表
其中maxsplit参数控制最多分割几次。
'''
import re
if __name__ == '__main__':
my_str ='2349348,23840931,.23493.4239840,394820.444'
if re.fullmatch(r'[0-9,\.]+', my_str) == None:
raise ValueError("输入参数不正确")
print(re.split(r'[,.]', str))
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年1月31日
@author: guzl86
3. 定义一个正 则 表达式,用于验证国内的所有手机号码 。
知识点:
1.^:匹配一行的开头
2.$:匹配一行的结尾
3.[]:用于确定中括号表达式的开始位置和结束位置
4.|:指定在两项之间人选一项。
5.\d:匹配0~9的所有数字
6.\D:匹配非数字
7.{}:用于标记前面子表达式出现的频度
'''
import re
if __name__ == '__main__':
pnum = '13158661713'
print(re.fullmatch(r'^(1[358][0-9]|14[579]|16[6]|17[0135678]|19[89])\d{8}$', pnum))
print(re.fullmatch(r'^(1[358][0-9]|14[579]|16[6]|17[0135678]|19[89])[0-9]{8}$', pnum))
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年1月31日
@author: guzl86
4. 提示用户输入 一个字符串,程序使用正则表达式获取该字符串中第一次重复出现的英文字
母 (包括大小写〉。
'''
import re
if __name__ == '__main__':
estr = input("请输入一串英文字母:")
print(re.findall(r'(\w)\1', estr))
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年2月1日
@author: guzl86
5 . 提示用户输入一个字符串和一个子串,打印出该子串在字符串中出现的 start和end 位置;
如果没有出现,则打印(-1,-1) 。例如用户输入 :
aaadaa
aa
程序输出:
(0, 1)
(1, 2)
(4,5)
知识点:
1.re.finditer(pattern,string,flag=0:扫描整个字符串,并返回字符串
中所有匹配pattern的子串组成的迭代器,迭代器元素是_sre_SRE_Match对象。
2.(?=exp):也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
'''
import re
if __name__ == '__main__':
my_srt = input('请输入一个字符串:')
my_srt = 'aaadaa'
my_sub_str = input('请输入一个子串:')
my_sub_str = 'aa'
nodes = list(re.finditer(r'(?={})'.format(my_sub_str), my_srt))
if nodes:
for node in nodes:
print("("+str(node.start())+','+str(node.start()+len(my_sub_str)-1)+')')
else:
print("(-1,-1)")
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年2月1日
@author: guzl86
6. 提示用户输入两行,第 一行是所有学习 Python 的学员编号(以逗号隔开),第二行是所有
学习 Java 的学员编号(以逗号隔开〕,计算所有只学 Python 不学 Java 的学员的数量。
知识点:
1. a.issubset(b):a是否为b的子集,类似 a<=b
2. a.issuperset(b):a是否为b的父集,类似a>=b
3. a.difference(b):将b中的集合从a中剔除,类似a-b
4. a.intersection(b):求a和b的交集
5. a.union(b):求a和b的并集
'''
if __name__ == '__main__':
p_student = input("请输入python学员的编号,并用逗号隔开:")
p_set = set(p_student.split(','))
j_student = input("请输入Java学员的编号,并用逗号隔开:")
j_set = set(j_student.split(','))
#两个集合做减法,就可以得到只学python,不学java的学院,并求出其数量
print(len(p_set-j_set))
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年2月1日
@author: guzl86
7. 提示用户输入两行,第 一 行是所有学习 Python 的学员编号(以逗号隔开),第 二行是所有
学习 Java 的学员编号(以逗号隔开),计算既学 Python 又学 Java 的学员的数量。
知识点:
1. a.issubset(b):a是否为b的子集,类似 a<=b
2. a.issuperset(b):a是否为b的父集,类似a>=b
3. a.difference(b):将b中的集合从a中剔除,类似a-b
4. a.intersection(b):求a和b的交集
5. a.union(b):求a和b的并集
'''
if __name__ == '__main__':
p_student = input("请输入python学员的编号,并用逗号隔开:")
p_set = set(p_student.split(','))
j_student = input("请输入Java学员的编号,并用逗号隔开:")
j_set = set(j_student.split(','))
#求两个集合的交集
print(p_set.intersection(j_set))
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年2月1日
@author: guzl86
8. 计算用户输入的两个带时区的时间戳字符串之间相差的秒数。例如用户输入:
Sun 10 May 2015 13:54:36 -0700
Sun 10 May 2015 13:54:36 -0000
程序应该输出:
25200
'''
import time
import datetime
if __name__ == '__main__':
time_str1 = 'Sun 10 May 2015 13:54:36 -0700'
time_str2 = 'Sun 10 May 2015 13:54:36 -0000'
fmt = '%a %d %b %Y %H:%M:%S %z'
print(
int(
abs(
time.mktime(time.strptime(time_str1,fmt))
-time.mktime(time.strptime(time_str2,fmt))
)
)
)
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年2月1日
@author: guzl86
9. 提示用户输入一个字符串,程序要输出该字符串中出现次数最多的 3 个字符,以及对应的
出现次数。
'''
from collections import Counter
if __name__ == '__main__':
my_str = input("请输入一个字符串:")
c = Counter(my_str)
print(c.most_common(3))
pass
# -*- coding: utf-8 -*-
'''
Created on 2020年2月1日
@author: guzl86
10. 定义一个 fibonacci(n)函数,该函数返回包含 n 个元素 的 斐波那契数列 的列表。再使用 lambda
表达式定义一个平方函数,程序最终输出斐波那契数列的前 n个元素的平方值。
'''
def fibonacci(n):
ret = [1,1]
if(n<2):
return ret[0:n]
else:
[ret.append(ret[i-1] + ret[i-2]) for i in range(2, n)]
return list(map(lambda x:x*x,ret))
if __name__ == '__main__':
print(fibonacci(10))
pass
来源:CSDN
作者:guzl86
链接:https://blog.csdn.net/insisted_search/article/details/104136077