Python(四)生成器 和 杨辉三角】的更多相关文章

学习链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000 生成器的东西不是很难,主要注意下list的里面listwy[-1]表示list的最后一个元素 然后是习题比较难,我一开始摸不着头脑 练习 杨辉三角定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \…
用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2*line - 1 f_list = list(range(leng+2)) #预先分配,insert初始胡会拖慢速度,最底下一行,左右也有1个空格 #全部初始化为0 for i,v in enumerate(f_list): f_list[v] = 0 ZEROLIST = f_list[:] #预…
先看杨辉三角的形态: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 上学的时候大多是用c语言的两层for循环在实现,现在我们尝试用生成器来实现. 先说思路:我们把每一次层看作一个list, 通过一个for循环,通过迭代,每次生成一个list,而生成器就在每一行生成list中起作用,我们先定义一个函数,作用是生成每一行的list for x in yhTriangle(10): print(x) 对于每一行,list 的第一个元素和最后一个元素是不变的.如…
def triangels(): """ 杨辉三角 """ lst = [1] n_count = 2 # 下一行列表长度 while True: yield lst lst_n = list(range(0 ,n_count)) lst = [1] + [lst[i-1]+lst[i] for i,v in enumerate(lst_n) if i!=0 and i!=n_count-1] + [1] n_count += 1 调用: n =…
[编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: #include<iostream> #include<bits/stdc++.h> #define int long long using namespace std; signed main() { int x; cin >> x; ;i < x;i++) { ;…
输入要显示的杨辉三角的行数,会打印出金字塔型的杨辉三角,不过行数太多的话,效果不太好,可以再调整一下格式控制. #include <stdio.h> #include <stdlib.h> int main() { int i,j,k; int line; int *prev, *next; printf("输入要查看杨辉三角的行数(大于2):"); scanf("%d",&line); if(line < 2) { print…
运行效果: 可在函数中指定阶层数,输出对应的杨辉三角 源代码如下: 1 # -*-coding:utf-8 -*- 2 ''' 3 chapter4_do.py 4 函数yanghui(n)用于输出n阶杨辉三角 5 ''' 6 def yanghui(n): 7 if not str(n).isdecimal() or n<2 or n>25: 8 print("杨辉三角函数yanghui(n),参数n必须是不小于2且不大于25的正整数") 9 return False 1…
def triangles(): c = [1] while 1: yield c a,b=[0]+c,c+[0] c=[a[i]+b[i] for i in range(len(a))] n = 0 for t in triangles(): print(t) n = n + 1 if n == 10: break…
  杨辉三角的Python实现 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Python生成器实现杨辉三角: # python def yanghui_trangle(n): if not isinstance(n, int) or n <= 0: print('error') line = [1] for i in range(n): yield line line = [1] + [line[i] + line[i+1] for i in rang…
使用python列表,展示杨辉三角 # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan yanghui = [] for i in range(1, 11): if i == 1: list0 = [1] elif i == 2: list0 = [1, 1] else: list0 = [1] * i for j in range(1, i - 1): list0[j] = yanghui[-1][j - 1]…