1、提示用户输入自己的名字、年龄、身高,并将该用户信息以JSON格式保存在文件中。再写一个程序读取刚刚保存的JSON文件,恢复用户输入的信息。
import json
name = input('请输入您的名字: ')
while True:
try: #采用异常处理机制,保证输入的格式正确
age = int(input('请输入您的年龄: '))
break
except:
print('年龄需要您输入整数')
while True:
try:
height = float(input('请输入您的身高: '))
break
except:
print('身高需要您输入浮点数')
with open('my.txt', 'w+') as f: #打开my.txt文件,如果不存在,就建立
json.dump({'name': name, 'age': age, 'height': height}, f) #转换为json格式,保存在文件中
with open('my.txt', 'r') as f: #打开my.txt文件
my_info = json.load(f) #从json格式转化成python格式
print(my_info['name']) #打印出信息
print(my_info['age'])
print(my_info['height'])
2、给定一个字符串,该字符串只包含数字0~9、英文逗号,英文点号,请使用英文逗号、英文点号将它们分割成多个子串。
import re, sys
while True:
string = input('输入字符串: ')
if string == 'exit':
sys.exit(0)
if not re.fullmatch('[0-9,\.]+', string):
raise ValueError("您的输入只能包含0-9数字、英文逗号、英文点号")
rt_list = re.findall('[0-9]+', string)
print(rt_list)
3、定义一个正则表达式,用于验证国内的所有手机号码。
import re, sys
while True:
string = input('请输入手机号: ')
if string == 'exit':
sys.exit(0)
if re.fullmatch('^(1[358][0-9]|14[579]|16[6]|17[0135678]|19[89])\d{8}$', string):
print('是手机号码')
else:
print('不是手机号码')
4、提示用户输入一个字符串,程序使用正则表达式获取该字符串中第一次重复出现的英文字母(包括大小写)。
import re, sys
while True:
string = input('请输入字符串: ')
if string == 'exit':
sys.exit(0)
m = re.findall(r'([a-zA-Z])[\w ]*?\1', string)
if m:
print(m[0])
5、提示用户输入一个字符串和一个子串,打印出该子串在字符串中出现的start和end位置:如果没有出现,则打印(-1, -1)。
import re
string, sub = input("请输入第一个字符串: "), input('请输入子串: ')
matches = list(re.finditer(r'(?={})'.format(sub), string))
if matches:
print('\n'.join(str((match.start(),
match.start() + len(sub) - 1)) for match in matches))
else:
print('(-1, -1)')
6、提示用户输入两行,第一行是所有学习python的学员编号(以逗号隔开),第二行是所有学习Java的学员编号(以逗号隔开),计算所有只学python不学java的学员的数量。
import re
python_set = set(re.findall('[^,\.\s]+', input('学习Python的学员: ')))
java_set = set(re.findall('[^,\.\s]+', input('学习Java的学员: ')))
print(python_set)
print(java_set)
diff = python_set - java_set
print('只学Python不学Java的学员:', diff)
print('只学Python不学Java的学员有%d人' % len(diff))
7、提示用户输入两行,第一行是所有学习python的学员编号(以逗号隔开),第二行是所有学习Java的学员编号(以逗号隔开),计算所有既学python又学java的学员的数量。
import re
python_set = set(re.findall('[^,\.\s]+', input('学习Python的学员: ')))
java_set = set(re.findall('[^,\.\s]+', input('学习Java的学员: ')))
print(python_set)
print(java_set)
inter = python_set & java_set
print('既学Python又学Java的学员:', inter)
print('既学Python又学Java的学员有%d人' % len(inter))
8、计算用户输入的两个带时区的时间戳字符串之间相差的秒数。
from datetime import datetime as dt
fmt = '%a %d %b %Y %H:%M:%S %z'
for i in range(int(input('请输入要比较几组:'))):
print(int(abs((dt.strptime(input('第一个时间:'), fmt) -
dt.strptime(input('第二个时间:'), fmt)).total_seconds())))
例如:
9、提示用户输入一个字符串,程序要输出该字符串中出现次数最多的3个字符,以及对应的出现次数。
from collections import Counter
string = input('请输入一个字符串: ')
c = Counter(string)
[print(t[0]) for t in c.most_common(3)]
10、定义一个fibonacci(n)函数,该函数返回包含n个元素的裴波那契数列的列表。再使用lambda表达式定义一个平方函数,程序最终输出裴波那契数列的前n个元素的平方值。
def fibonacci(n):
rvt_list = [1, 1]
# 生成fibonacci数列
[rvt_list.append(rvt_list[-1] + rvt_list[-2]) for i in range(2, n)]
return rvt_list
print(fibonacci(10))
# 计算fibonacci数列的元素的平方
x = map(lambda x: x*x , fibonacci(10))
print([e for e in x])