python3练习100题——031
原题链接: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的更多相关文章
- python3练习100题——003
今天继续-答案都会通过python3测试- 原题链接:http://www.runoob.com/python/python-exercise-example3.html 题目:一个整数,它加上100 ...
- python3练习100题——002
因为特殊原因,昨天没有做题.今天继续- 原题链接:http://www.runoob.com/python/python-exercise-example2.html 题目: 企业发放的奖金根据利润提 ...
- python3练习100题——004
继续做题-经过python3的测试 原题链接:http://www.runoob.com/python/python-exercise-example4.html 题目:输入某年某月某日,判断这一天是 ...
- python3练习100题——036
原题链接:http://www.runoob.com/python/python-exercise-example36.html 题目:求100之内的素数. 之前有类似的题,所以这次遇到觉得很容易了, ...
- python3练习100题——035
原题链接:http://www.runoob.com/python/python-exercise-example34.html 题目:文本颜色设置. 学习了一下python3 的文本颜色设置. 其实 ...
- python3练习100题——020
原题链接:http://www.runoob.com/python/python-exercise-example20.html 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下 ...
- python3练习100题——013
熟悉的水仙花数来了,,,... 原题链接:http://www.runoob.com/python/python-exercise-example13.html 题目:打印出所有的"水仙花数 ...
- python3练习100题——056
题目:画图,学用circle画圆形. 可以用turtle.circle画图. import turtle turtle.setup(0.6,0.6) turtle.pensize(3) turtle. ...
- python3练习100题——050
题目:输出一个随机数. 程序分析:使用 random 模块. import random print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 pri ...
随机推荐
- 正则表达式中的exec()方法
推荐该博主的内容链接: https://blog.csdn.net/ddwddw4/article/details/84658398?ops_request_misc=%7B%22request%5F ...
- VUE中集成echarts时 getAttribute of null错误
错误 错误场景一: 错误提示: 在运行Vue项目时出现了上述错误,出现该错误的原因是Echarts的图形容器还未生成就对其进行了初始化所造成的,代码如下: // 基于准备好的dom,初始化echart ...
- MySql学习-5.查询2
1.聚合: 1.1 5个聚合函数: count(*):括号中写列名,或者 *: max(列):此列的最大值: min(列):此列的最小值: sum(列):此列的和: avg(列):此列的平均值: 1. ...
- springboot 查看H2数据库
1 再application.properties文件中,添加 spring.h2.console.enabled=true 2 再浏览器中打开: http://localhost:8080/h2- ...
- php根据字段相识度进行排序查询
$data = [ [ 'id'=>1, 'title'=>'test内容管理系统', ], [ 'id'=>2, 'title'=>'开源test', ], [ 'id'=& ...
- Qt实践基础-简单的登录界面的实现
主要代码的实现: 1.为了更好的实现界面的组织,采用C++直接构建UI 2.登录多次密码错误则断开“确认”按钮的链接 3.注意理解static变量的应用 4.QString类的使用更像继承了strin ...
- 一个抓猫的游戏 消遣GAME 持续更新中!
一个抓猫的游戏 版本 Catch_Cat_V0.30 https://files-cdn.cnblogs.com/files/send-off-a-friend/Catch_Cat_V0.3.rar ...
- 剑指offer-面试题53_1-在排序数组中查找数字-二分查找
/* 题目: 统计一个数字在排序数组中出现的次数. */ /* 思路: 1.从前往后遍历,时间复杂度O(n). 2.二分查找到目标数字target,向前向后遍历,时间复杂度O(n). 3.利用二分法, ...
- bootstrap 兼容 IE8
在 html 中引用 <!-- bootstrap 兼容 IE8 --> <script src="../../jsapi/js/html5shiv.min.js" ...
- 通过 Chrome浏览器 查看http请求报文
as we all know HTTP 请求报文 包含请求行.请求头和请求体三部分 请求行:(请求方式 资源路径 协议/版本) 例如:POST /test/index.html HTTP/1.1 P ...