原题链接:http://www.runoob.com/python/python-exercise-example31.html

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

我的代码:

def fun():
li=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
s=input("please enter the initial:").upper()
results=[]
for i in li:
if i.startswith(s):        #startswith()函数,解决开头匹配
results.append(i)
if len(results) ==1:
return results[0]
else:
s += input("please input the second char:").lower()
for i in li:
if i.startswith(s):
return i if __name__ =='__main__':
print(fun())

思考:

这道题乍一看很容易,只要两次if判断就能实现。但是看到别人的答案,发现这是一种典型的题:一次输入一个字母,首字母匹配一个list里的内容,如果匹配多个,再输入并匹配第二个字母、第三个字母……,直到只匹配出一个的时候,返回。

可能列表足够多,要输入好几个字母才能判断,那就不能用上述的两个if实现了,应该设计一个重复判断的函数反复调用,或者递归。

递归的实现:

def fun(s,li=None):
li == [] if li is None else li
a =input("please enter a character :")
s += a
results=[]
for i in li:
if i.startswith(s):      
results.append(i)
if len(results) ==1:               #用list储存,用len()判断匹配到的个数
return results[0]
else:
return fun(s,li)               #s来存储上一次运算的结果,给下一次,用这种方式实现了递归 if __name__=='__main__':
s=''                            #初始化s,重要
li=['abe','abce','abcdf','abcdef','abcda']    #其实这种方法并不全面,要找的话,找不到短的会重复匹配的项,如[a,abc,abcd],a和abc都不可能被找出
print(fun(s,li))

本来想着设计一个重复判断的函数调用,但是有问题。

只能写成这样:

def fun():
s=''
while True:
a=input("please enter a character:")
s+=a
results=[]
li=['abd','abce','abcdf','abcdef','abcda','kw','kxx','Saturday','Sunday']
for i in li:
if i.startswith(s):
results.append(i)
if len(results) ==1:
return results[0]

后来改了改,函数参数设置个s,就避免了每一轮循环s保存不下来的问题,还是能写出来了~

def fun():
s=''
x=None
while not x:        #while的条件不能是True了,因为retrun在下面的函数了。
s,x=judge(s)
print(x) def judge(s):
a=input("please enter a character:")
s+=a
results=[]
li=['abd','abce','abcdf','abcdef','abcda','kw','kxx','Saturday','Sunday']
for i in li:
if i.startswith(s):
results.append(i)
if len(results) ==1:
return s,results[0]
else:
return s,None    #要这一句,不然默认返回的None传到上面两个参数会报错

python3练习100题——031的更多相关文章

  1. python3练习100题——003

    今天继续-答案都会通过python3测试- 原题链接:http://www.runoob.com/python/python-exercise-example3.html 题目:一个整数,它加上100 ...

  2. python3练习100题——002

    因为特殊原因,昨天没有做题.今天继续- 原题链接:http://www.runoob.com/python/python-exercise-example2.html 题目: 企业发放的奖金根据利润提 ...

  3. python3练习100题——004

    继续做题-经过python3的测试 原题链接:http://www.runoob.com/python/python-exercise-example4.html 题目:输入某年某月某日,判断这一天是 ...

  4. python3练习100题——036

    原题链接:http://www.runoob.com/python/python-exercise-example36.html 题目:求100之内的素数. 之前有类似的题,所以这次遇到觉得很容易了, ...

  5. python3练习100题——035

    原题链接:http://www.runoob.com/python/python-exercise-example34.html 题目:文本颜色设置. 学习了一下python3 的文本颜色设置. 其实 ...

  6. python3练习100题——020

    原题链接:http://www.runoob.com/python/python-exercise-example20.html 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下 ...

  7. python3练习100题——013

    熟悉的水仙花数来了,,,... 原题链接:http://www.runoob.com/python/python-exercise-example13.html 题目:打印出所有的"水仙花数 ...

  8. python3练习100题——056

    题目:画图,学用circle画圆形. 可以用turtle.circle画图. import turtle turtle.setup(0.6,0.6) turtle.pensize(3) turtle. ...

  9. python3练习100题——050

    题目:输出一个随机数. 程序分析:使用 random 模块. import random print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 pri ...

随机推荐

  1. 正则表达式中的exec()方法

    推荐该博主的内容链接: https://blog.csdn.net/ddwddw4/article/details/84658398?ops_request_misc=%7B%22request%5F ...

  2. VUE中集成echarts时 getAttribute of null错误

    错误 错误场景一: 错误提示: 在运行Vue项目时出现了上述错误,出现该错误的原因是Echarts的图形容器还未生成就对其进行了初始化所造成的,代码如下: // 基于准备好的dom,初始化echart ...

  3. MySql学习-5.查询2

    1.聚合: 1.1 5个聚合函数: count(*):括号中写列名,或者 *: max(列):此列的最大值: min(列):此列的最小值: sum(列):此列的和: avg(列):此列的平均值: 1. ...

  4. springboot 查看H2数据库

    1  再application.properties文件中,添加 spring.h2.console.enabled=true 2 再浏览器中打开: http://localhost:8080/h2- ...

  5. php根据字段相识度进行排序查询

    $data = [ [ 'id'=>1, 'title'=>'test内容管理系统', ], [ 'id'=>2, 'title'=>'开源test', ], [ 'id'=& ...

  6. Qt实践基础-简单的登录界面的实现

    主要代码的实现: 1.为了更好的实现界面的组织,采用C++直接构建UI 2.登录多次密码错误则断开“确认”按钮的链接 3.注意理解static变量的应用 4.QString类的使用更像继承了strin ...

  7. 一个抓猫的游戏 消遣GAME 持续更新中!

    一个抓猫的游戏 版本 Catch_Cat_V0.30 https://files-cdn.cnblogs.com/files/send-off-a-friend/Catch_Cat_V0.3.rar ...

  8. 剑指offer-面试题53_1-在排序数组中查找数字-二分查找

    /* 题目: 统计一个数字在排序数组中出现的次数. */ /* 思路: 1.从前往后遍历,时间复杂度O(n). 2.二分查找到目标数字target,向前向后遍历,时间复杂度O(n). 3.利用二分法, ...

  9. bootstrap 兼容 IE8

    在 html 中引用 <!-- bootstrap 兼容 IE8 --> <script src="../../jsapi/js/html5shiv.min.js" ...

  10. 通过 Chrome浏览器 查看http请求报文

    as we all know  HTTP 请求报文 包含请求行.请求头和请求体三部分 请求行:(请求方式 资源路径 协议/版本) 例如:POST /test/index.html HTTP/1.1 P ...