23-复习3-案例讲解

lesson23复习3:


#视频1-案例讲解

#第一题
#利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示
#60-89分之间的用B表示,60分一下的用C表示

 1 #第一题:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示
 2 #60-89分之间的用B表示,60分一下的用C表示
 3 
 4 x=80
 5 
 6 if x>=90:
 7     print("A")
 8 elif x in range(60,90):
 9     print("B")
10 else:
11     print("C")

#运行:
B

------------------------------------------------
输入 某年-某-月-某日,判断这一天是这一年的第几天?

例如:
输入: 2018-01-01 输出 2018-01-01是2018年第1天
输入: 2018-02-28 输出 2018-02-28是2018年第59天

 1 #第二题:输入 xxxx-xx-xx 得出第几天
 2 
 3 #第一种方法
 4 x="2018-11-01"
 5 #首先需要把 年月日 取出来?
 6 year,month,day=x.split("-")   #拆包
 7 #所有月份的天数:31 30 2月
 8 
 9 count_day=0
10 #循环,加上当前月之前月份的所有天数
11 for i in range(1,int(month)):
12     #想要加所有月份,
13     if i==2:
14         count_day +=29 if False else 28
15     elif i in [1,3,5,7,8,10,12]:  #31天的月份
16         count_day +=31
17     else:
18         count_day +=30
19 count_day += int(day)
20 print(count_day);

#运行:305

------------------------------------------------
#第二种方法:

 1 #第二种方法:
 2 time="2018-11-01"
 3 year,month,day=map(lambda obj:int(obj),time.split("-"))
 4 #拆包 map函数 匿名函数
 5 
 6 count_day=0
 7 def fun(obj):
 8     if obj==2:
 9         return 29 if year%4==0 and year %100 !=0 or year %400==0 else 28
10          #三目运算
11     else:
12         return 31 if obj in [1,3,5,7,8,10,12] else 30
13 
14 count_day+= day +sum(map(fun,range(1,month)))
15 print(count_day)

#运行:305

------------------------------------------------
#第三题:
输入一个字符串,统计出字符串中的元素的个数

要求:
1,字符不区分大小写,也就是‘A’也算在‘a’这个的个数上
2,返回一个固定28个的字典,字典的28键为:a-z,26个小写字母,加上‘WHITESPACE’ 和‘OTHER’
3,字典的值为队友元素的个数,字符是空格则属于‘WHITESPACE’,其他的字符为‘OTHER’
提示:先创建一个28个键的字典,字典键队友的初始值为0

 1 # #第三题:
 2 # 输入一个字符串,统计出字符串中的元素的个数
 3 #
 4 # 要求:
 5 # 1,字符不区分大小写,也就是‘A’也算在‘a’这个的个数上
 6 # 2,返回一个固定28个的字典,字典的28键为:a-z,26个小写字母,加上‘WHITESPACE’ 和‘OTHER’
 7 # 3,字典的值为队友元素的个数,字符是空格则属于‘WHITESPACE’,其他的字符为‘OTHER’
 8 # 提示:先创建一个28个键的字典,字典键队友的初始值为0
 9 
10 x="AAA ?xx"
11 
12 di={chr(k):0 for k in range(97,123)}
13 di.update({"withspace":0,"other":0})
14 
15 y=x.lower()
16 #print(y)
17 
18 #统计,1遍历,2正则
19 for i in y:
20     if i in di.keys():
21         di[i] +=1;
22     elif i==" ":
23         di['withspace']+=1
24     else:
25         di["other"] +=1
26 
27 print(di)

#运行:
{'n': 0, 'w': 0, 'y': 0, 'l': 0, 'u': 0, 'b': 0, 'd': 0, 'g': 0,
'r': 0, 's': 0, 'z': 0, 'k': 0, 'i': 0, 'p': 0, 'j': 0, 'e': 0,
'withspace': 1, 'c': 0, 'q': 0, 'f': 0, 't': 0, 'v': 0,
'h': 0, 'x': 2, 'a': 3, 'o': 0, 'm': 0, 'other': 1}

------------------------------------------------
#第四题:写一个属于你自己的Frange函数,Frange与range类似,一样的参数规则,但是每一项必须是float类型
要求:
1,不能利用range等已有的功能来方便实现,要自己写逻辑
2,输出只需要是个列表就好

列如:
>>>Frange(10)
[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0]
>>>Frange(1,5)
[1.0,2.0,3.0,4.0]
>>>Frange(1,10,2)
[1.0,3.0,5.0,7.0,9.0]

 1 #第一种解答
 2 def fun(start,stop=0,step=1):
 3     if stop==0:
 4         stop=start
 5         start=0
 6 
 7     li=list()
 8     while start<stop:
 9         li.append(float(start))
10         start+=step
11 
12     return li
13 
14 li2=fun(1,10,2)
15 print(li2)

#运行:
[1.0, 3.0, 5.0, 7.0, 9.0]

#第二种解答

 1 #第二种解答
 2 def frange(start,stop=0,step=1):
 3     li=list()
 4 
 5     if stop==0:
 6         start,stop=stop,start
 7 
 8     while start<stop:
 9         li.append(float(start))
10         start+=step
11 
12     return li
13 
14 li2=frange(1,10,2)
15 print(li2)

#运行:
[1.0, 3.0, 5.0, 7.0, 9.0]

猜你喜欢

转载自www.cnblogs.com/tiantiancode/p/12899936.html