Python零基础编程【51-75】题

本专栏主要涉及到100道Python零基础编程题,大部分题型翻译于Github上的100+ Python challenging programming exercises,如果小伙伴对于英语没有阅读障碍,可以去Github上阅读。专栏共有100题,分为四章,每章25道题;本篇博客为Python零基础编程的第三篇【51-75】;好了,废话不多说,开始展开;


和鲸社区链接Python零基础100题,无忌,让为师看看你还记得多少

和鲸社区聚集了大量的数据爱好者和数据从业者,社区内有很多优质的数据分析Python项目,我也是在里面学到很多数据相关的知识呀,真的是受益良多,对数据感兴趣的小伙伴可以去玩一玩,与其他小伙伴一起学习、交流、参加训练营以及参加比赛等,探索数据的新世界,快来跟我一起加入【和鲸社区】把!


第一篇:Python零基础编程【1-25】题

第二篇:Python零基础编程【26-50】题

第三篇:Python零基础编程【51-75】题

第四篇:Python零基础编程【76-100】题


第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()使用正则表达式查找所有子字符串。

import re
s = input()
print(re.findall("\d+",s))

第61题

问题:打印unicode字符串“hello world”。
提示:使用u'strings'格式来定义unicode字符串;

unicodeString = u"hello world!"
print(unicodeString)

第62题

问题:python中的解码与编码;
提示:使用encode()与decode()函数进行转换。

s = '和鲸社区'
enc = s.encode('utf-8')
dec = enc.decode('utf-8')
print(enc)
print(dec)

第63题

问题:编写一个特殊注释来表明Python源代码文件是unicode格式的。

# -*- coding: utf-8 -*-
#----------------------------------------#

第64题

问题:写一个程序来计算1/2+2/3+3/4+......+n/(n+1)。
示例:如果下面的n作为程序的输入:5;
那么,程序的输出应该是:3.55;
提示:使用float()将整数转换为浮点数。

n=int(input())
sum=0.0
for i in range(1,n+1):
    sum += float(float(i)/(i+1))
print(sum)

第65题

问题:编写程序计算:当n>0和F(0)=1时,F(n)=F(n-1)+100通过控制台输入一个给定的n (n>0)。
示例:如果下面的n作为程序的输入:5;
那么,程序的输出应该是:500;
提示:我们可以在Python中定义递归函数。

def f(n):
    if n==0:
        return 0
    else:
        return f(n-1)+100
n=int(input())
print(f(n))

第66题

问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序,在控制台输入给定n的情况下计算f(n)的值。
示例:如果下面的n作为程序的输入:7;
那么,程序的输出应该是:13;
提示:我们可以在Python中定义递归函数。

def f(n):
    if n == 0: return 0
    elif n == 1: return 1
    else: return f(n-1)+f(n-2)
n=int(input())
print(f(n))

第67题

问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序使用列表理解输出逗号分隔的Fibonacci序列,并通过控制台输入给定的n。
示例:如果下面的n作为程序的输入:7;
那么,程序的输出应该是:0,1,1,2,3,5,8,13;
提示:我们可以在Python中定义递归函数。使用列表理解从现有列表生成列表。使用string.join()连接字符串列表。

def f(n):
    if n == 0: return 0
    elif n == 1: return 1
    else: return f(n-1)+f(n-2)
n=int(input())
values = [str(f(x)) for x in range(0, n+1)]
print(",".join(values))

第68题

问题:请使用generator编写一个程序,当n由控制台输入时,以逗号分隔的形式输出0和n之间的偶数;
示例:如果下面的n作为程序的输入10;
那么,程序的输出应该是:0,2,4,6,8,10;
提示:使用yield生成生成器中的下一个值。

def EvenGenerator(n):
    i=0
    while i<=n:
        if i%2==0:
            yield i
        i+=1
n=int(input())
values = []
for i in EvenGenerator(n):
    values.append(str(i))
print(",".join(values))

第69题

问题:请编写一个生成器程序,以逗号分隔的形式输出0到n之间可以被5和7整除的数字,而n是通过控制台输入的。
示例:如果下面的n作为程序的输入:100;
那么,程序的输出应该是:0,35,70;
提示:使用yield生成生成器中的下一个值。

def NumGenerator(n):
    for i in range(n+1):
        if i%5==0 and i%7==0:
            yield i
n=int(input())
values = []
for i in NumGenerator(n):
    values.append(str(i))
print(",".join(values))

第70题

问题:请写assert语句来验证列表[2,4,6,8]中的每个数字都是偶数。
提示:使用“断言表达式”进行断言。

li = [2,4,6,8]
for i in li:
    assert i%2==0

第71题

问题:请编写一个程序,从控制台接收基本数学表达式,并输出计算结果。
示例:如果下面的字符串作为程序的输入:35 + 3;
那么,程序的输出应该是:38;
提示:使用eval()计算表达式。

expression = input()
print(eval(expression))

第72题

问题:请编写一个二分搜索函数,搜索排序列表中的项。函数应该返回要在列表中搜索的元素的索引。
提示:使用if/elif来处理条件。

import math
def bin_search(li, element):
    bottom = 0
    top = len(li)-1
    index = -1
    while top>=bottom and index==-1:
        mid = int(math.floor((top+bottom)/2.0))
        if li[mid]==element:
            index = mid
        elif li[mid]>element:
            top = mid-1
        else:
            bottom = mid+1
    return index
li=[2,5,7,9,11,17,222]
print(bin_search(li,11))
print(bin_search(li,12))

第73题

问题:随机生成1,100内的一个整数;
提示:random.randint()

import random
random.randint(a=1,b=100)

第74题

问题:请使用Python math模块生成一个值在10到100之间的随机浮点数。
提示:使用random.random()在[0,1]中生成一个随机浮点数。

import random
print(random.random()*100)

第75题

问题:请使用Python math模块生成一个值在5到95之间的随机浮点数。
提示:使用random.random()在[0,1]中生成一个随机浮点数。

import random
print(random.random()*100-5)

好了,到这里为止,Python零基础编程100题第三篇【51-75】题已经结束了,小伙伴们好好练习,先自己思考思考,不会做的情况下在看答案哦,这样才能够提高的更快!如果哪里有疑问的地方,欢迎在评论区留言,我会不断完善的!

                       来都来了,确定不留下点什么嘛,嘻嘻~

                                     

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数分小白龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值