#e1.3 Fibonacci_Sequence

本文详细介绍了斐波那契数列的概念,其数学定义及由来,并提供了生成斐波那契数列的Python代码示例。通过具体实例,读者可以深入理解这一数列的特性及其在计算机科学中的应用。

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。在数学上,斐波那契数列定义如下:

a1=1,a2=1,a3=2,a4=5,…,an=an−1+an−2a_1 =1,a_2=1,a_3=2,a_4=5,…,a_n=a_{n-1}+a_{n-2}a1=1a2=1,a3=2a4=5an=an1+an2

实现代码如下:

#e1.3 Fibonacci_Sequence
#coding = utf8

"""书上正常内容"""
a,b=0,1
while a<1000:
    print(a,end='、')
    a,b=b,a+b
print()

"""改进版,最后输出句号"""
a,b=0,1
print(a,end='')
while b<1000:
    print('、'+str(b),end='')
    a,b=b,a+b
print('。')
#、号和数字之间没有空格

a,b=0,1
print(a,end='')
while b<1000:
    print('、',b,end='')
    a,b=b,a+b
print('。')
#、号和数字之间有空格

是否应该将下面的函数中每个步骤单独写一个函数? def get_disklist(self): try: result = ResultInfo() #获取ip地址 self.logger.step(&#39;步骤1: 读取当前pc网卡的IP/MASK/gateway/DNS信息&#39;) hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) if ip_address: result.add_result(passfail=ResultInfo.PASS, actual_result=ip_address, expected_result=&#39;10.13.36.47&#39;, test_comment=&#39;获取ip&#39;, item_id=&#39;步骤1.1: 读取当前pc网卡的IP信息&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=ip_address, expected_result=&#39;10.13.36.47&#39;, test_comment=&#39;获取ip&#39;, item_id=&#39;步骤1.1: 读取当前pc网卡的IP信息&#39;) #获取子网掩码 cmd = &#39;ipconfig /all&#39; if os.name == &#39;nt&#39; else &#39;ifconfig&#39; output = os.popen(cmd).read() masks = re.findall(r&#39;子网掩码[^\n]*?(\d+\.\d+\.\d+\.\d+)|netmask[^\n]*?(\d+\.\d+\.\d+\.\d+)&#39;, output) if masks: result.add_result(passfail=ResultInfo.PASS, actual_result=masks, expected_result="[(&#39;255.255.255.0&#39;, &#39;&#39;)]", test_comment=&#39;获取子网掩码&#39;, item_id=&#39;步骤1.2: 读取当前pc网卡的MASK信息&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=masks, expected_result="[(&#39;255.255.255.0&#39;, &#39;&#39;)]", test_comment=&#39;获取子网掩码&#39;, item_id=&#39;步骤1.2: 读取当前pc网卡的MASK信息&#39;) #获取网关 gateways = netifaces.gateways() default_gateway = gateways.get(&#39;default&#39;, {}).get(netifaces.AF_INET, [None])[0] if default_gateway: result.add_result(passfail=ResultInfo.PASS, actual_result=default_gateway, expected_result=&#39;10.13.36.1&#39;, test_comment=&#39;获取网关&#39;, item_id=&#39;步骤1.3: 读取当前pc网卡的gateway信息&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=default_gateway, expected_result=&#39;10.13.36.1&#39;, test_comment=&#39;获取网关&#39;, item_id=&#39;步骤1.3: 读取当前pc网卡的gateway信息&#39;) #获取DNS服务器 output = os.popen(&#39;ipconfig /all&#39;).read() dns_servers = re.findall(r&#39;DNS 服务器[^\n]*?(\d+\.\d+\.\d+\.\d+)&#39;, output) #保存文件 if dns_servers: result.add_result(passfail=ResultInfo.PASS, actual_result=dns_servers, expected_result= "[&#39;10.13.1.2&#39;]", test_comment=&#39;获取DNS服务器&#39;, item_id=&#39;步骤1.4: 读取当前pc网卡的DNS信息&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=dns_servers, expected_result="[&#39;10.13.1.2&#39;]", test_comment=&#39;获取DNS服务器&#39;, item_id=&#39;步骤1.4: 读取当前pc网卡的DNS信息&#39;) a = str(ip_address) b = str(masks) c = str(default_gateway) d = str(dns_servers) e = a + b + c + d filename = "output.txt" result_dir = "result" filepath = os.path.join(result_dir, filename) with open(filepath, &#39;w&#39;, encoding=&#39;utf-8&#39;) as f: f.write(e) self.logger.step(&#39;步骤2: 读取当前pc的盘符&#39;) dut_wan_static_ip = [f"{d}:" for d in string.ascii_uppercase if os.path.isdir(f"{d}:")] # self.logger.info(f&#39;dut_wan_static_ip is {dut_wan_static_ip}&#39;) if dut_wan_static_ip: result.add_result(passfail=ResultInfo.PASS, actual_result=dut_wan_static_ip, expected_result="[&#39;C:&#39;, &#39;D:&#39;, &#39;E:&#39;, &#39;F:&#39;]", test_comment=&#39;获取盘符&#39;, item_id=&#39;步骤2: 读取当前pc的盘符&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=dut_wan_static_ip, expected_result="[&#39;C:&#39;, &#39;D:&#39;, &#39;E:&#39;, &#39;F:&#39;]", test_comment=&#39;获取盘符&#39;, item_id=&#39;步骤2: 读取当前pc的盘符&#39;) self.logger.step(&#39;步骤3: 读取当前pc的时间并判断&#39;) current_time_obj = datetime.now().replace(microsecond=0) if current_time_obj: result.add_result(passfail=ResultInfo.PASS, actual_result=current_time_obj, expected_result="当前时间", test_comment=&#39;获取当前时间&#39;, item_id=&#39;步骤3.1: 读取当前pc的时间&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=current_time_obj, expected_result="当前时间", test_comment=&#39;获取当前时间&#39;, item_id=&#39;步骤3.1: 读取当前pc的时间&#39;) # 判断当前时间和2024年中秋日期 mid_autumn_2024 = datetime(2024, 9, 17) # 判断逻辑 if current_time_obj >= mid_autumn_2024: result.add_result(passfail=ResultInfo.PASS, actual_result=current_time_obj, expected_result="当前时间", test_comment=&#39;判断当前日期是否迟于2024中秋&#39;, item_id=&#39;步骤3.2: 读取当前pc的时间并判断&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=current_time_obj, expected_result="当前时间", test_comment=&#39;判断当前日期是否迟于2024中秋&#39;, item_id=&#39;步骤3.2: 读取当前pc的时间并判断&#39;) self.logger.step(&#39;步骤4: 计算斐波那契数列前100位的总和和时间&#39;) start_time = time.time() sum_result, sequence = fibonacci_sum(100) end_time = time.time() if sum_result == 927372692193078999175: result.add_result(passfail=ResultInfo.PASS, actual_result=sum_result, expected_result=&#39;927372692193078999175&#39;, test_comment=&#39;计算前100项和&#39;, item_id=&#39;步骤4.1: 计算斐波那契数列前100位的总和&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=sum_result, expected_result=&#39;927372692193078999175&#39;, test_comment=&#39;计算前100项和&#39;, item_id=&#39;步骤4.1: 计算斐波那契数列前100位的总和&#39;) if start_time - end_time != None: result.add_result(passfail=ResultInfo.PASS, actual_result=start_time - end_time, expected_result=&#39;0&#39;, test_comment=&#39;计算时间&#39;, item_id=&#39;步骤4.2: 计算斐波那契数列前100位的总和时间&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=start_time - end_time, expected_result=&#39;0&#39;, test_comment=&#39;计算时间&#39;, item_id=&#39;步骤4.2: 计算斐波那契数列前100位的总和时间&#39;) self.logger.step(&#39;步骤5: 抓包30s分析tcp,udp,icmp&#39;) sniff(filter="tcp or udp or icmp", prn=packet_handler, timeout=30) if counters[&#39;TCP&#39;]: result.add_result(passfail=ResultInfo.PASS, actual_result=counters[&#39;TCP&#39;], expected_result=&#39;大于0&#39;, test_comment=&#39;TCP数量&#39;, item_id=&#39;步骤5.1: 抓包30s分析tcp&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=counters[&#39;TCP&#39;], expected_result=&#39;大于0&#39;, test_comment=&#39;TCP数量&#39;, item_id=&#39;步骤5.1: 抓包30s分析tcp&#39;) if counters[&#39;UDP&#39;]: result.add_result(passfail=ResultInfo.PASS, actual_result=counters[&#39;UDP&#39;], expected_result=&#39;大于0&#39;, test_comment=&#39;UDP数量&#39;, item_id=&#39;步骤5.2: 抓包30s分析udp&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=counters[&#39;UDP&#39;], expected_result=&#39;大于0&#39;, test_comment=&#39;UDP数量&#39;, item_id=&#39;步骤5.2: 抓包30s分析udp&#39;) if counters[&#39;ICMP&#39;] != None: result.add_result(passfail=ResultInfo.PASS, actual_result=counters[&#39;ICMP&#39;], expected_result=&#39;0&#39;, test_comment=&#39;ICMP数量&#39;, item_id=&#39;步骤5.3: 抓包30s分析icmp&#39;) else: result.add_result(passfail=ResultInfo.FAIL, actual_result=counters[&#39;ICMP&#39;], expected_result=&#39;0&#39;, test_comment=&#39;ICMP数量&#39;, item_id=&#39;步骤5.3: 抓包30s分析icmp&#39;) return result
09-10
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值