100+Python挑战性编程练习系列 -- day 15
Question 54
假设我们有一些“www.example.com”格式的电子邮件地址[email protected],请编写程序来打印给定电子邮件地址的公司名称。用户名和公司名都只由字母组成。
示例:如果将以下电子邮件地址作为程序的输入:
然后,程序的输出应该是:
如果输入数据被提供给问题,则应假设它是控制台输入。
import re email = "[email protected]" pattern = "\w+@(\w+).com" ans = re.findall(pattern, email) print(ans) Question 55
写一个程序,它接受一个由空格分隔的单词序列作为输入,以打印仅由数字组成的单词。
示例:如果将下列单词作为程序的输入:
2 cats and 3 dogs.
然后,程序的输出应该是:
['2', '3']
如果输入数据被提供给问题,则应假设它是控制台输入。
方法1
import re email = input() pattern = "\d+" ans = re.findall(pattern, email) print(ans) 方法2
email = input().split() ans = [] for word in email: if word.isdigit(): # can also use isnumeric() / isdecimal() function instead ans.append(word) print(ans) 方法3
email = input().split() ans = [word for word in email if word.isdigit()] # using list comprehension method print(ans) Question 56
编写一个程序来读取ASCII字符串并将其转换为UTF-8编码的Unicode字符串。
s = input() u = s.encode('utf-8') print(u) Question 57
写一个程序来计算1/2+2/3+3/4+…+ n/n+1,通过控制台输入n(n>0)。
例如:如果将以下n作为程序的输入:
5
然后,程序的输出应该是:
3.55
如果输入数据被提供给问题,则应假设它是控制台输入。
方法1
n = int(input()) sum = 0 for i in range(1, n+1): sum += i/(i+1) print(round(sum, 2)) # rounded to 2 decimal point 方法2
def question_59(n): print(round(sum(map(lambda x: x/(x+1), range(1, n+1))), 2)) question_59(5)