zoukankan      html  css  js  c++  java
  • [Python]小甲鱼Python视频第049课(乱入:生成器)课后题及参考解答

    # -*- coding: utf-8 -*-
    """
    Created on Sun Mar 24 21:54:53 2019
    
    @author: fengs
    """
    
    
    """
    测试题(笔试,不能上机哦~):
    
    
    0. 通常,一般的函数从第一行代码开始执行,并在什么情况下结束?
        return 、异常
        
    1. 什么是协同程序?
        可以运行的独立函数调用,函数可以暂停,挂起,在需要的时候从程序离开的地方继续或者重新开始
        
    2. 生成器所能实现的任何操作都可以由迭代器来代替吗,为什么?
        可以,生成器是一种特殊的迭代器
    3. 将一个函数改造为生成器,说白了就是把什么语句改为 yield 语句?
        return 
        
    4. 说到底,生成器的最大作用是什么?
        保存上一次迭代计算的环境,让下一次生成迭代的条件从上一次的结果开始
        
    5. 如下,get_prime() 是一个获得素数的生成器,请问第 2 行代码 while True 有何作用?
    def get_primes(number):
        while True:
            if is_prime(number):
                yield number
            number += 1
            
            
        保证生成器下次被调用时遇到的是新的yield,保证该生成器不结束,只要调用next烦烦噶就有值
    """
    
    
    """
    0. 要求实现一个功能与 reversed() 相同(内置函数 reversed(seq) 是返回一个迭代器,是序列 seq 的逆序显示)的生成器。
    """
    
    def myRev(str_value):
        while True:
            if str_value !="":
                yield str_value[-1]
                str_value = str_value[:-1:]
            else:
                break
    
    
    
    for i in myRev("FishC"):
        print(i, end='')
        
        
    """
    1. 10 以内的素数之和是:2 + 3 + 5 + 7 = 17,那么请编写程序,计算 2000000 以内的素数之和?
    """
    
    def isPrime(number):
      if number <= 1: 
        return False
      i = 2
      while i*i <= number: 
        if number % i == 0: 
          return False
        i += 1
      return True
    
        
    print('
    ')
    print(sum( x for x in range(2000000)  if isPrime(x) == True   ))
            
        
    
    
    
    
    
        
        
        
    """
    
    def fabs():
        
        fn0 = 0
        fn1 = 1
        
        while True:
            fn0,fn1 = fn1,fn0+fn1
            yield fn0
            
    for i in fabs():
        print(i)
        if i > 100:
            break
        
    e = ( i for i in range(10))  #括号就是生成器推导式
    print(next(e))    
    
    """
    
    
    
    
    #print(sum( i for i in range(101)))
    

      

    ~不再更新,都不让我写公式,博客园太拉胯了
  • 相关阅读:
    Java从入门到实战之(22)数组之练习
    LeetCode343. 整数拆分
    LeetCode64. 最小路径和
    LeetCode120. 三角形最小路径和
    LeetCode37. 解数独
    实验:通过Telnet访问路由器
    telnet 命令使用方法详解,telnet命令怎么用?
    COBIT、ITIL
    500 internal privoxy error错误怎么解决?
    iPhone12有充电器和耳机吗
  • 原文地址:https://www.cnblogs.com/alimy/p/10591049.html
Copyright © 2011-2022 走看看