原题链接: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. 你为什么不来了解一下Python?

    一.什么是Python Python [1](英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum发明. ...

  2. ThreadPool(线程池)介绍

    >>返回<C# 并发编程> 1. 线程池的由来 1.1. 线程池出现前 1.2. 线程池的诞生 1.3. CLR线程池工作过程 2. 线程池解决的问题 2.1. 异步调用方法 ...

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

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

  4. 【DTOJ】1001:长方形周长和面积

    DTOJ 1001:长方形周长和面积  解题报告 2017.11.05 第一版  ——由翱翔的逗比w原创 题目信息: 题目描述 已知长方形的长和宽,求长方形的周长和面积? 输入 一行:空格隔开的两个整 ...

  5. 文件下载(download) 前后台备注自用

    1.后台 1.1 ResponseBean 返回封装的格式 @Data @Accessors(chain = true) public class ResponseBean { private Str ...

  6. css背景颜色、背景图片,以及列表的多种样式

    背景样式 • background-color 设置元素的背景颜色.• background-image 把图像设置为背景.• background-position 设置背景图像的起始位置.• ba ...

  7. Can you answer these queries? HDU - 4027 有点坑

    #include<iostream> #include<cstring> #include<cstdio> #include<math.h> #incl ...

  8. 连接数据库的工具JdbcUtil

    public class JdbcUtil { private static String driver=null;//驱动 private static String url=null;//连接地址 ...

  9. HTML5音频(自定义mp3播放器源码)

    audio对象 src兼容.ogg .wav .mp3 <audio controls src='data/imooc.wav'></audio> width autoplay ...

  10. Pair类模板

    >Pair的实现是一个结构体而不是一个类< 1.标准头文件 #include<utility> 似乎无需引入该文件,在std命名空间内也有pair类型 2.格式为:templa ...