第51题
问题:定义一个名为American的类及其子类NewYorker。
提示:使用类子类(ParentClass)来定义子类。
class American(object): pass class NewYorker(American): pass anAmerican = American() aNewYorker = NewYorker() print(anAmerican) print(aNewYorker)
同上
第52题
问题:定义一个名为Circle的类,可以用半径来构造。Circle类有一个可以计算面积的方法。
提示:使用def methodName(self)定义一个方法。
class Circle(object): def __init__(self, r): self.radius = r def area(self): return self.radius**2*3.14 aCircle = Circle(2) print(aCircle.area())
同上
第53题
问题:定义一个名为Rectangle的类,它可以由长度和宽度构造。矩形类有一个方法可以计算面积。
提示:使用def methodName(self)定义一个方法。
class Rectangle(object): def __init__(self, l, w): self.length = l self.width = w def area(self): return self.length*self.width aRectangle = Rectangle(2,10) print(aRectangle.area())
略
第54题
问题:定义一个名为Shape的类及其子类Square。Square类有一个init函数,它以长度作为参数。这两个类都有一个area函数,可以打印形状的区域,形状的区域默认为0。
提示:要覆盖父类中的方法,可以在父类中定义一个同名的方法。
class Shape(object): def __init__(self): pass def area(self): return 0 class Square(Shape): def __init__(self, l): Shape.__init__(self) self.length = l def area(self): return self.length*self.length aSquare= Square(3) print(aSquare.area())
略
第55题
问题:请引发RuntimeError异常。
提示:使用raise()引发异常。
raise RuntimeError('something wrong')
略
第56题
问题:编写一个函数来计算5/0,并使用try/except来捕获异常。
提示:使用try/exexception捕获异常。
def throws(): return 5/0 try: throws() except ZeroDivisionError: print("division by zero!") except ExceptionError: print('Caught an exception') finally: print('In finally block for cleanup')
略
第57题
问题:定义一个自定义异常类,它将字符串消息作为属性。
提示:要定义一个自定义异常,我们需要定义一个继承自exception的类。
class MyError(Exception): """My own exception class Attributes: msg -- explanation of the error """ def __init__(self, msg): self.msg = msg error = MyError("something wrong")
略
第58题
问题:假设我们有一些'username@companyname.com '格式的电子邮件地址,请编写程序打印给定电子邮件地址的用户名,用户名和公司名都只由字母组成。
示例:如果下面的电子邮件地址作为程序的输入:john@google.com.
那么,程序的输出应该是:john
在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用\w来匹配字母。
import re emailAddress = input() pat2 = "(\w+)@((\w+\.)+(com))" r2 = re.match(pat2,emailAddress) print(r2.group(1))
第59题
问题:假设我们有一些“username@companyname.com”格式的电子邮件地址,请编写程序打印给定的电子邮件地址的公司名称;用户名和公司名都只由字母组成。
示例:如果下面的电子邮件地址作为程序的输入:john@google.com
那么,程序的输出应该是:google
在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用\w来匹配字母。
import re emailAddress = input() pat2 = "(\w+)@(\w+)\.(com)" r2 = re.match(pat2,emailAddress) print(r2.group(2))
第60题
问题:编写一个程序,接收一个由空格分隔的单词序列作为输入,打印只由数字组成的单词。
示例:如果下面的单词作为程序的输入:2 cats and 3 dogs;
那么,程序的输出应该是:['2', '3']
在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用re.findall()使用正则表达式查找所有子字符串。
1. import re 2. s = input() 3. print(re.findall("\d+",s))
我的答案:
>>> s = '2 cats and 3 dogs' >>> s.split(' ') ['2', 'cats', 'and', '3', 'dogs'] >>> for i in s.split(' '): try:print(int(i),end=' ') except:pass 2 3