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 ...
随机推荐
- 传智播客C++视频学习笔记(3)
#include<iostream> using namespace std; //内存分区模型 //代码区,存放二进制代码,由操作系统进行管理 //全局区,存放全局变量.静态变量.常量( ...
- 区块链 POS和POW的区别
如果你是一名资深的比特币矿工或商人,你一定听说过POW和POS,否则,很难理解. 读完本文,相信会让你明白,原来,虚拟货币除了挖矿,还有利息! 第一段:通俗的概念解析 POW:全称Proof of W ...
- 基于SSM开发在线家教预约系统源码
开发环境: Windows操作系统开发工具:Eclipse+Jdk+Tomcat8+mysql数据库 注意:次项目运行Tomcat8服务器里面 次项目比较大,需要自行研究 运行效果图 源码及原文链接: ...
- cmake 指定编译特定可执行文件
最近进行编译项目,但是项目中有很多可执行文件:每次编译起来比较费时,下面一组代码可以指定特定的编译目标进行编译,而不用编译所有目标: #!/bin/bash # 通过传递第一个参数,表示要编译的目标: ...
- 【Git】git使用 - 各种常用场景命令解决
(多看git中的各种帮助-h/--help,可能有你想要的命令) 1.分支的创建和切换 创建 >>>> git branch branchName 切换分支 >>& ...
- LNMP+HTTPS
title: "Lnmp + Https" date: 2019-08-28T16:18:20+08:00 draft: true --- 注:我的linux的ip地址为192.1 ...
- 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并
洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...
- 剑指offer-拓展训练-字符的所有组合-全组合
/* 题目: 给定不含重复字符字符串的全组合. */ /* 思路: 递归法. 例给定abc,输出的组合长度为1,2,3. 对于长度为2的组合,分选择a(ab,ac)和不选择a的情况(bc). 选择a, ...
- 【37】池化层讲解(Pooling layers)
池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下. 先举一个池化层的例子,然后我们再讨论池化层的 ...
- 无人机通信协议MAVLink简介
MAVLink MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)之间通讯,以及无 ...