练习2

Posted saber9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习2相关的知识,希望对你有一定的参考价值。

############练习##########
# def get_population():
# # ret = []
# with open("练习1","r",encoding="utf-8") as f: #打开文件并将其赋值给变量f
# for i in f:
# # ret.append(i)
# # return ret
# yield i
# g = get_population() #函数调用后要想在原先基础上迭代,必须将其赋值给一个变量用来保存状态
# # 如果在迭代时不赋值保存状态直接再次使用函数名调用,就重新开始新的迭代
# s1 = eval(g.__next__())["population"] #此时得到的值是一个字符串,用eval得到字符串里的类型
# s2 = eval(g.__next__())["population"] #将结果赋值一个变量才会保存状态
# s3 = eval(g.__next__())["population"] #若未保存状态,当在调用时便重新开始迭代

# all_p = sum(eval(s)["population"] for s in get_population()) #注意生成器每次迭代会在迭代完所有值后结束
# print(all_p) #再次需要迭代时就必须在重头开始调用,此处求和的for循环不能in 上面已赋值的变量g,否则会在上面迭代的基础上再迭代
# x1 = s1/all_p
# x2 = s2/all_p
# print(s1)
# print(x1)
# print(s2)
# print(x2)

# for p in get_population():
# n = eval(p) #将循环得到的值eval取出里面的类型
# n1 = n["population"]
# print(n1)

###########生产消费模型##########
# def shengchan():
# ret = []
# for i in range(10):
# ret.append("baozi %s" %i)
# return ret
# def xiaofei(x):
# for index,baozi in enumerate(x): #enumerate将循环的结果加上索引序号
# print("第%s个吃%s" %(index,baozi))
# n = shengchan()
# xiaofei(n)

# import time
# def xiaofei(name):
# print("%s要消费" %name)
# while True:
# f = yield
# time.sleep(0.5)
# print("%s消费了%s" %(name,f))

# def shengchan():
# s1 = xiaofei("sjy")
# s2 = xiaofei("yue")
# s1.__next__()
# s2.__next__()
# for i in range(10):
# time.sleep(0.5)
# s1.send("消费了%s" %i) #send()括号里的参数是赋值给yield,
# s2.send("消费了%s" %i) #调用send时,生成器函数必须要是迭代执行的状态,即已经.__next__()
#
# shengchan()

# #####################复习练习####################
# 布尔值为False的情况:0,(),[],{},"",False
# return函数结束符,并返回结果
# yield类似return,是生成器函数的结束返回,调用执行时使用 .__next__()迭代执行
# 函数的默认返回值是None
# break结束当前循环
# continue进入下一次循环


# 用函数获取某个范围内能被3和7整除的数,并返回这些数的个数及他们的和
# def func(start,end):
# ret = []
# for i in range(start,end):
# if i%3 == 0:
# if i%7 == 0: #两if判断可以写在一起:和就用and连接,if i%3==0 and i%7==0
# ret.append(i)
# s = sum(x for x in ret) #注意缩进返回值是在循环结束后
# return ret,len(ret),s
# print(func(3,100))


# def func(start,end,a=0,b=0): #使用递归方法实现上述要求
# if start == end:
# return a,b
# if start%3 == 0 and start%7 == 0:
# a += 1
# b += start
# ret = func(start+1,end,a,b)
# return ret
# print(func(1,100))


# 统计一个字符串中大写字母和小写字母以及数字的个数
# def f(x): #注意参数,变量名最好不要用语言内置的变量名
# l1 = []
# l2 = []
# l3 = []
# for i in x:
# if i.isupper(): #注意字符串判断方法是带有()的
# l1.append(i)
# elif i.islower():
# l2.append(i)
# elif i.isdigit():
# l3.append(i)
# d = {"da":len(l1),"xiao":len(l2),"shuzi":len(l3)}
# return d
# print(f("SJyue2333"))


# 函数的调用
# def func1(arg):
# print(arg+100)
# def func2(arg):
# r = func1(arg+1) #func1这个函数没有返回值,所以这个ret的值是None
# print(arg)
# print(r)
# r = func2(7)
# print(r)

# name = "sjy"
# def func():
# name = "yue"
# def f1():
# name = "yi"
# def f2():
# global name
# name = "xi"
# #f2() #嵌套函数如果不在外层函数中调用时不会执行的
# print(name)
# f1() #调用函数都是调用最外层的函数名来执行
# print(name)
# return func
# r = func()
# print(r) #如果函数中没有return值,则打印结果是None
# print(name)

# name = "sjy"
# def f(func):
# name = "yue"
# func()
# def shoe():
# print(name)
# s = f(shoe) #将一个函数作为另一个函数的参数
# print(s)


# 做一个阶乘
# def f(n):
# if n == 1:
# return 1
# return n * f(n - 1) #递归
# s = f(5)
# print(s)

# from functools import reduce
# s = reduce(lambda x,y:x*y,[x for x in range(1,8)])
# print(s)


# 第一天采了若干个桃子,然后吃了一半后又多吃一个,第二天将剩下的又吃了一半,然后又多吃一个
# 以此类推,到了第10天的时候只剩下一个,求开始采了多少个
# def f(x,date):
# date -= 1
# if date == 0:
# return x
# x = (x+1)*2
# ret = f(x,date)
# return ret
# print(f(1,10))

以上是关于练习2的主要内容,如果未能解决你的问题,请参考以下文章

3185 队列练习 1 3186 队列练习 2

征服指针——指针练习

Python3 练习2 列表和字典练习

python练习题集合-2

python 练习题练习题2--多分支选择

linux课堂练习