您的位置:首页 > 编程语言 > Python开发

4个练习提升你的python编程能力

2019-07-08 10:08 127 查看

本文我们以4个练习为主,掌握python基本的解决问题方式,编程思路以及代码编写。

— 实现字符串find功能 —

定义函数myfind(data, substr),输入参数data与substr,返回substr在data中位置,不存在返回-1;

实现思路

先来看一张图,这样更清晰表达整个过程:

具体查找过程如下:

1>从data起始位置开始比较,索引记为index=0,
2>从data[index]开始取substr长度子串记为tmp,
3>tmp与substr比较,如果相等返回index,否则inde加1,重复1~3过程;
4>如果len(data) - index < len(substr),停止查找,返回-1;

但是还有几个问题需要考虑:

1>如何循环查找?使用wile循环查找,每次index值加1;

2>截止条件判断?截止条件:找到位置或者len(data)-index < len(substr);

3>返回值?返回值:找到子串,返回索引,否则返回-1;

整个逻辑代码如下:

index = 0
while true:
#添加截止条件判断:剩余字符长度<字串长度,退出,返回-1;

#如果找到,返回index
index += 1

函数定义如下:
def myfind(data, substr):pass;

最后将实现代码放到函数中,整理后的代码如下:
#data:查找字符串
#substr:查找子串
#找到子串返回index, 否则返回-1
def myfind(data, substr):
#定义索引
index= 0
#获取data长度
datalens = len(data)
#获取substr长度
lens = len(substr)
while True:
#如果剩余字符串长度小于子串长度,直接返回-1
if datalens-index < lens:
return -1
#切片操作获取data中比较内容
tmp = data[index:index+lens]
#添加打印信息,确认比较内容
print(‘tmp = “{}”,substr = “{}” index={}’.format(tmp, substr, index))
if tmp == substr:
#输出位置
print(‘find {} in {} index={}’.format(substr, data, index) )
return index
else:
print(‘not find’)
#索引加1
index += 1
#测试
source = ‘c++pythonjava’
substr = ‘python’
index = myfind(source, substr)
print(index)
— 单位转换程序 —

实现三对数值转换:输入半径,输出圆面积;输入美元,输出人民币,汇率为:1¥=6.9367 RMB;输入公里,输出英里,转换值:1 Km = 0.6213712 mile;

实现思路:

1>题目分析,循环读入命令,根据输入执行不同操作;
2>编写伪代码,实现基本逻辑;
3>单位转换实现;
3>使用所学知识点实现代码编写;

逻辑代码如下:

#半径转面积
r = 10
pi = 3.14
#rr3.14
area = pow(r, 2)*pi
print(‘半径%f面积=%f’%(r, area))
#¥转RMB
rate = 6.9367
dollar = 2
rmb = dollar * rate
print(’%f$ = %fRMB’%(dollar, rmb))
#Km转mile
ratio = 0.6213712
km = 3
mile = km * ratio
print(’%fkm = %fmile’%(km, mile))
输出结果:
半径10.000000面积=314.000000
2.000000$ = 13.873400RMB
3.000000km = 1.864114mile
我们可以将每个功能封装成函数,方便调用,整理后代码如下:

#参数:半径
#返回值:面积
def rtoarea®:
pi = 3.14
#rr3.14
return pow(r, 2)*pi

#参数dollar:美元数量
#返回对应人民币数量
def dollartormb(dollar):
rate = 6.9367
return dollar * rate
#参数:千米
#返回:对应英里
def kmtomile(km):
ratio = 0.6213712
return km *ratio

print(‘半径%f面积=%f’%(10, rtoarea(10)))
print(’%f$ = %fRMB’%(10, dollartormb(10)))
print(’%fkm = %fmile’%(10, kmtomile(10)))
这个题目主要知识点:while/if/elif/break使用,通过这个练习希望大家能够熟练掌握这些逻辑语句。

— 打印输出1~9乘法口诀 —

1~9的乘法口诀朋友们都知道,看到这个感觉思路有点乱,我们先分析问题:

分析思路:

1x1
1x2 2x2
1x3 2x3 3x3

乘数(num1)与被乘数(num2)关系:num1范围为1~num2,结果为num1*num2;
我们实现1x3 2x3 3x3这个基本没问题,那就先实现这个,然后在处理其他。

实现一行打印,例如1x2,2x3,3x3,从1到9调用lines函数,这样就出来了。

但是每次输出就会换行,print方法如果输出不换行,这个题目基本就快完成了,
读者朋友可以自己看下print函数说明。

代码实现:
实现函数:def mul1to9(),代码实现如下:

def lines(num):
f = ‘{}x{}={}’
#range方法start为1, stop为num+1
for n in range(1,num + 1):
#指定end为空格
print(f.format(n, num, n *num), end=’ ')
#增加换行
print()

#乘法口诀接口
def mul1to9():
for n in range(1, 10):
lines(n)
mul1to9()
这个练习我们主要目的是多层循环使用,字符串输出格式细化。

— 计算消费额度 —

某用户购买一些商品,s = ‘上衣:300 , 鞋子: 230, 手机:1499 , 裤子: 199’;
计算该用户消费额度。

分析思路:

1>获取字符串中金额(注意数字前后的空格),然后相加;
2>使用当前所学知识点如果获取每个数字?

实现思路:

1>查看字符串,使用’,'切分字符串,获取字符串列表;
2>遍历列表,获取字符串列表中的数字;
3>计算总和。

代码实现:

定义函数:def sumconsume(data),返回消费金额
代码实现如下:

#统计金额,返回消费总金额
def sumconsume(data):
money = 0
#使用’,‘切分字符串
for item in data.split(’,’):
#按’:‘切分
vals = item.split(’:’)
#获取消费金额
price = vals[1]
#做一个strip,将空白字符去掉
price = price.strip()
#转成数字,并累加
money += int(price)
return money
vals = ‘上衣:300 , 鞋子: 230, 手机:1499 , 裤子: 199’
print(’"%s", 消费金额:%d’%(vals,sumconsume(vals)))
最终实现结果:“上衣:300 , 鞋子: 230, 手机:1499 , 裤子: 199”, 消费金额:2228;
这个题目主要练习字符串的切分,strip及基本逻辑。www.lekaowang.com.cn/xbm/gwt/jvl/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: