【提升Coding能力】100道Python练习题21-30



公众号后台回复“图书“,了解更多号主新书内容
     作者:Yang
     来源:Python数据科学修炼之路

Python

Question 21

Level 3级

1

问题:编写一个程序实现猜数小游戏,心里默想一个数,然后键盘输入,如果小于或者大于你心里的数,给予提示,如果是你心里的数,游戏结束。

Solution

import random 
secret=random.randint(1,10)
temp=input("请输入心里想的数:")
guess=int(temp)
while guess!=secret:
    temp=input("猜错了,请重新输入吧:")
    guess=int(temp)
    if guess==secret:
        print("恭喜你,你猜对了!")
        print("游戏结束")
    else:
        if guess>secret:
            print("猜大了!!")
        else:
            print("猜小了!!")
======测试======
请输入心里想的数:8
猜错了,请重新输入吧:8
猜大了!!
猜错了,请重新输入吧:2
猜小了!!
猜错了,请重新输入吧:5
猜小了!!
猜错了,请重新输入吧:7
猜大了!!
猜错了,请重新输入吧:6
恭喜你,你猜对了!
游戏结束

Python

Question 22

Level 3级

1

问题:机器人从原点(0,0)开始在平面上移动。机器人可以按照给定的步骤向上,下,左和右移动。 

    机器人移动的轨迹如下所示:上5下3左3右2¡方向后的数字为步长。 

    请编写一个程序,以计算一系列移动和原始点之后与当前位置的距离。 

    如果距离是浮点数,则只需打印最接近的整数。 

    示例:如果将以下作为程序的输入给出:UP 5 DOWN 3 LEFT 3 RIGHT 2

    然后,程序的输出应为:2

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

import re
import math
while True:
    h=0
    z=0 
    o=(0,0)
    t=input("请输入上x下x左x右x :")
    arf=re.findall("[a-zA-Z]+",t)
    num=re.findall("\d+",t)
    for i in range(len(arf)):
        if arf[i]=="UP":
            z+=int(num[i])
        elif arf[i]=="DOWN":
            z-=int(num[i])
        elif arf[i]=="LEFT":
            h-=int(num[i])
        else:
            h+=int(num[i])
    dec=math.floor(math.sqrt((0-h)**2 +(0-z)**2))
    print("移动的点距离远点的距离是:%d"%(dec))
    ww=input("如果需要退出,请按Q,按其他键继续 。")
    if ww=="Q":
        break
    else:
        continue
======测试======
请输入上x下x左x右x :UP 5 DOWN 3 LEFT 3 RIGHT 2
移动的点距离远点的距离是:2
如果需要退出,请按Q,按其他键继续 。1
请输入上x下x左x右x :UP 15 DOWN 3 LEFT 3 RIGHT 22
移动的点距离远点的距离是:22
如果需要退出,请按Q,按其他键继续 。Q

Python

Question 23

Level 2级

1

问题:使用生成器定义一个函数,该生成器可以在给定范围0和n之间迭代被7整除的数字。

提示:考虑使用yield

Solution

def fn23(n):
    for i in range(n):
        if i%7==0:
            y=i
            yield y

======测试======
for i in fn23(20):
    print(i)
0
7
14

Python

Question 24

Level 3级

1

问题:编写一个程序来计算输入中单词的频率。 

在按字母数字顺序对键进行排序后,应输出输出。 

假设向程序提供了以下输入:New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3。

然后,

输出应为:

2:2

3:2

New:1

Python:5

Read:1

and:1

between:1

choosing:1 

or:2 

to:1

提示如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

s=input("请输入一段话:")
dict1={}
for i in  s.split(" "):
    dict1[i]=dict1.get(i,0)+1  
words=sorted(dict1.keys(),key=lambda x:x[0])
print("您输入的这段话中,每个字个数统计如下:")
for i in words:
    print("{0}:{1}".format(i,dict1[i]))

======测试======
请输入一段话:New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3。
您输入的这段话中,每个字个数统计如下:
2:2
3?:1
3。:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1

Python

Question 25

Level 1级

1

定义一个可以接受两个字符串作为输入的函数,

并在控制台中打印最大长度的字符串。 

如果两个字符串的长度相同,则该函数应逐行打印所有字符串。

提示:

使用len()函数获取字符串的长度

Solution

def func25(a,b):
    if len(a)>len(b):
        print(a)
    elif len(a)<len(b):
        print(b)
    else:
        print(a)
        print(b)

======测试======
>>>func25("yang","wenqiang")
wenqiang
>>>func24("yang","wang")
yang
wang

Python

Question 26

Level 1级

1

定义一个可以打印字典的函数,其中键是1到20之间的数字(都包括在内),值是键的平方。

提示:

使用dict [key] = value模式将条目放入字典中。 

使用**运算符可获取数字的幂。使用range()进行循环。

Solution

def func26():
    dict1={}
    for i in range(1,21):
        dict1[i]=i**2
    return dict1
======测试======
>>>func26()
{1: 1,
 2: 4,
 3: 9,
 ···
 19: 361,
 20: 400}

Python

Question 27

Level 1级

1

定义一个可以生成字典的函数,其中键是1到20之间的数字(都包括在内),值是键的平方。该功能应仅打印值。

提示:

使用dict [key] = value模式将条目放入字典中。 

使用**运算符可获取数字的幂。 

使用range()进行循环。 

使用keys()迭代字典中的键。 

我们也可以使用item()来获取键/值对。

Solution

def func27():
    dict1={}
    for i in range(1,21):
        dict1[i]=i**2
    for k,v in dict1.items():
        print(v)
======测试======
>>>func27()
1
4
9
···
361
400

Python

Question 28

Level 2级

1

定义一个名为Rectangle的类,该类可以通过长度和宽度来构造。Rectangle类具有可以计算面积的方法。

提示:

使用def methodName(self)定义方法。

Solution

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())
20

Python

Question29

Level 2级

1

编写一个函数以计算5/0并使用try / except捕获异常。

Solution

def throws():
    return 5/0

try:
    throws()
except ZeroDivisionError:
    print("division by zero!")
finally:
    print('In finally block for cleanup')

===out===
division by zero!
In finally block for cleanup

Python

Question 30

Level 1级

1

1、编写一个程序,可以使用过滤器功能过滤列表中的偶数。列表为:[1,2,3,4,5,6,7,8,9,10]。

2、编写一个程序,该程序可以map()生成一个列表,该列表的元素是[1,2,3,4,5,6,7,8,9,10]中的元素的平方。

3、编写程序以生成并打印另一个在给定元组(1,2,3,4,5,6,7,8,9,10)中其值为偶数的元组。

Solution

【1】
lst=[1,2,3,4,5,6,7,8,9,10]
[i for i in filter(lambda x:x%2==0,lst)]
===out===
[2, 4, 6, 8, 10]

【2】
lst=[1,2,3,4,5,6,7,8,9,10]
[i for i in map(lambda x:x**2,lst)]
===out===
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

【3】
def func27_4():
    tp=tuple((1,2,3,4,5,6,7,8,9,10))
    tp2=[]
    for i in tp:
        if i%2==0:
            tp2.append(i)
    return tuple(tp2)
===test===
>>>func27_4()
(2, 4, 6, 8, 10)

以上内容,大佬可以路过,对于小白或者入门要提高的同学应该有所帮助,觉得有用,记得转发收藏哦!

参考链接:https://github.com/zhiwehu/Python-programming-exercises

◆ ◆ ◆  ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值