题目五十四
假设我们有“username@companyname.com”格式的电子邮件地址,请编写程序打印给定电子邮件地址的公司名称。
用户名和公司名称都仅由字母组成。示例:如果给出以下电子邮件地址作为程序的输入:
john@google.com
输出的结果应该为:
google
输入应当从控制台输入。
提示:
使用\w来匹配字母。
代码实现
方法一:
import re #加载库
email_adress, domain_name = [],[]
while True:
email1 = input("请输入邮件地址:")
if not email1:
break
email_adress.append(email1) #记录输入的邮件地址信息
for i in email_adress: #调取邮件信息
pattern = "\w+@(\w+).com" #字符匹配,注意括号的位置,如果括号的位置不对的话,很有可能会输出一个字母
ans = re.findall(pattern, i)
domain_name.append(ans[0])#因为匹配出来的是一个列表,所以这个地方是将列表的单一元素添加到记录表中
print(domain_name)
方法二:
import re
email = "john@google.com elise@python.com"
pattern = "\w+@(\w+).com"
ans = re.findall(pattern, email)
print(ans)
运行结果
输出一:
请输入邮件地址:john@google.com
请输入邮件地址:elise@python.com
请输入邮件地址:
['google', 'python']
输出二:
['google', 'python']
题目五十五
编写一个程序,该程序接受由空格分隔的一系列单词作为输入,以打印仅由数字组成的单词。
示例:如果给出以下单词作为程序的输入:
2 cats and 3 dogs.
输出:
[‘2’, ‘3’]
提示:
使用re.findall()查找使用regex的所有子字符串。
代码实现
方法一:re.findall()查找
import re
lst = input("请输入:")
pattern = "\d+"
ans = re.findall(pattern,lst)
print(ans)
方法二:.isdigit()函数
lst = input("请输入:").split()
num_lst = [i for i in lst if i.isdigit() ]
print(num_lst)
运行结果
输出:
请输入:2 cats and 3 dogs.
['2', '3']
题目五十六
打印一个Unicode字符串“Hello world”。
提示:
使用u‘string’格式定义Unicode字符串
代码实现
lst = u"Hello world"
print(lst)
运行结果
输出:
Hello world
题目五十七
编写一个程序来读取ASCII字符串,并将其转换为utf-8编码的Unicode字符串。
提示:
使用Unicode()/encode()函数进行转换。
代码实现
s = input("请输入:")
u = s.encode("utf-8")
print(u)
运行结果
输出:
请输入:aaaa
b'aaaa'
题目五十八
编写一个特殊的注释,以指示Python源代码文件在Unicode中。
提示:
使用Unicode()函数进行转换。
代码实现
# -*- coding: utf-8 -*-
题目五十九
编写一个程序计算1/2+2/3+3/4+.+n/n+1,并通过控制台输入给定的n(n>0)。
示例:如果给出以下n作为程序的输入:
5
输出为:
3.55
提示:
使用Float()将整数转换为浮点数。即使不转换,也不会引起问题,因为python默认理解值的数据类型。
代码实现
n = int(input("请输入整数:")) #输入时从字符串转为整数类型
sum = 0
for i in range(1,n+1): #注意range函数是左闭右开的区间范围
sum += i/(i+1)
print(round(sum,2)) #取小数点后两位
运行结果
输出:
请输入整数:5
3.55