num

Python 运行异常管理

女生的网名这么多〃 提交于 2020-03-08 10:45:07
1 前言 Python使用被称为 异常 的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。 如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。 异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。 使用了try-except代码块时,即便出现异常,程序也将继续运行。 2 运用try-except代码块 我们知道,除数是不能为0的,当程序员误将除数设置为0时,将会出现ZeroDivisionError错误。 实现代码: 1 try: 2 print(6/0) 3 except ZeroDivisionError: 4 print("you can not divide by zero!") 运行结果: you can not divide by zero! 工作原理: 将可能出现错误的代码放在try代码块中,如果运行无错误,将跳过except代码块;若导致了错误,Python将查找except代码块,并执行其中的代码。 这样一来,当运行出错时,用户看到的便是一条友好的错误信息。 若try-except后面还有其他代码,那么程序将接着运行。 3 运用try

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)

岁酱吖の 提交于 2020-03-08 10:32:08
Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) A. Even Subset Sum Problem 题意 给出一串数,找到其中的一些数使得他们的和为偶数 题解 水题,找到一个偶数或者两个奇数就好了 代码 #include<iostream> #include<cstdio> #include<cstring> #define def 110 using namespace std; long a[def]; int main() { long _,ans0,ans1,ans2,n,i; for(scanf("%ld",&_);_;_--){ scanf("%ld",&n); ans0=ans1=ans2=-1; for(i=1;i<=n;i++){ scanf("%ld",&a[i]); if(a[i]%2==0) ans0=i; else if(ans1==-1) ans1=i; else ans2=i; } if(ans0==-1&&(ans1==-1||ans2==-1)) printf("-1\n"); else if(ans0!=-1) printf("1\n%ld\n",ans0); else printf("2\n%ld %ld\n",ans1,ans2); }

【网络流24题】汽车加油行驶

狂风中的少年 提交于 2020-03-08 08:04:03
【网络流24题】汽车加油行驶 Description 给定一个N * N 的方形网格,设其左上角为起点◎,坐标为(1,1),X 轴向右为正,Y轴向下为正,每个方格边长为1,如图所示。一辆汽车从起点◎出发驶向右下角终点▲,其坐标为(N,N)。在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在 行驶过程中应遵守如下规则: (1)汽车只能沿网格边行驶,装满油后能行驶K 条网格边。出发时汽车已装满油,在起点与终点处不设油库。 (2)汽车经过一条网格边时,若其X 坐标或Y 坐标减小,则应付费用B,否则免付费用。 (3)汽车在行驶过程中遇油库则应加满油并付加油费用A。 (4)在需要时可在网格点处增设油库,并付增设油库费用C(不含加油费用A)。 (5)(1)~(4)中的各数N、K、A、B、C均为正整数,且满足约束:2 £ N £ 100,2 £ K £ 10。 设计一个算法,求出汽车从起点出发到达终点的一条所付费用最少的行驶路线。 Input 第一行是N,K,A,B,C的值。 第二行起是一个N * N 的0-1 方阵,每行N 个值,至N+1 行结束。方阵的第i 行第j 列处的值为1 表示在网格交叉点(i,j)处设置了一个油库,为0 时表示未设油库。各行相邻两个数以空格分隔。 Output 最小费用 Sample Input 9 3 2 3 6 0 0 0 0 1 0 0 0 0 0

for 循环

怎甘沉沦 提交于 2020-03-08 04:26:27
目录 for循环 for+break for+continue for……else for循环嵌套 秀一波操作 练习题 for循环 for循环与while循环的区别 for循环是可控的,while循环一不小心就会造成死循环 for循环不需要条件,while循环需要条件 # 打印一个列表 hobby_list = ('raeding','wirth','cooking','fishing',1,3,5,7,9) count = 0 while count < len(hobby_list): # 使用的是while循环实现 print(hobby_list[count]) count += 1 raeding wirth cooking fishing 1 3 5 7 9 hobby_list = ('raeding','wirth','cooking','fishing',1,3,5,7,9) for i in hobby_list: # 使用for循环实现 print(i) raeding wirth cooking fishing 1 3 5 7 9 相较于上面两个代码,我们可以发现while循环实现列表打印比较繁琐,而for循环只需要两行就解决了 for i in range(6): # 相当于for i in range(0,6) print(i) 0 1 2 3 4 5

JS面向对象之作用域

折月煮酒 提交于 2020-03-08 02:24:15
作用域 词法作用域 作用域 域 表示的就是 范围 ,即 作用范围 就是一个名字在什么地方能使用,在什么地方不能使用 块级作用域 块 级别的作用范围 // 在 c , java 等编程语言中,下面的语法报错 { var num = 123; // 应该用int , 这里是伪代码 { console.log(num); // 123 } console.log(num); // 报错 } 在 js 中采取词法作用域 词法(代码) 作用域,就是代码在编写过程中体现出来的作用范围,代码一旦写好,不用执行,他的作用范围就已经确定好了,这个就是所谓的 词法作用域 在 js 中的词法作用域规则 1. 函数允许方位函数外的数据 2. 整个代码结构中只有函数可以限定作用域 3. 作用规则首先是 提升规则 分析 4. 就近原则 如果当前作用规则有了名字,就不考虑外面的名字 在 js 中作用域分析方法 1. 先进行预解析,分析预解析过程 * 程序在执行过程, 会先将代码读取到内存中检查. 会将所有的声明在此时进行标记. 所谓的标记就是 让 js 解释器知道有这个名字, 后面在使用名字的时候, 不会出现未定义的错误. 这个标记过程就是提升. * 声明 1. 名字的声明, 标识符的声明( 变量名声明 ) * 名字的声明就是让我们的解释器知道有这个名字 * 名字没有任何数据与之对应 2. 函数的声明 *

js作用域和词法分析

狂风中的少年 提交于 2020-03-08 02:22:20
  都知道js中不存在类似于c++等语言的块级作用域,例如for循环中定义的变量,其实是属于当前对象下的属性,同一对象下可以随便访问。 只有函数可以限定一个变量的作用范围,即函数才是变量的作用域。   对于函数的变量访问时遵循作用域链的,即当前函数运行时会有一个当前作用域,当饮用某个变量时,会先查找当前作用域内是否存在该变量的定义,如果不存在则根据作用域链向上去查找父函数的作用域,有则拿来使用,没有则继续向上直到全局作用域。关于作用域链这里就不仔细描述,简单而言,类似原型链,从全局函数直到当前函数的作用域存在一种相互包含的关系,子可以向上访问,但是父不可以向下访问子函数的变量,这样层层嵌套的关系链。   类似这样的:  var num = 10;   function a (){     alert(num);   }   a() //结果alert(10),a里没有num所以向上查找外层的作用域,有且等于10所以弹出10而不是undefined.   但是,下面的代码就是undefined了:   var num = 10; var num = 10;   function a (){     alert(num);     var num = 11;   }    为什么呢? a()执行时虽然num=11没有赋值但是父级作用域里是有num=10的,不应该是 undefined呀

js闭包

余生颓废 提交于 2020-03-08 01:09:26
​ 今天呢咱们来聊聊这个js闭包,我们基本上在面试中,必然会问到的问题:什么是闭包?说说你对闭包的理解.闭包的作用是什么? ​ 闭包也是一个很不好理解的概念,往往我们遇到的机会很多很多,很多朋友呢都说了对闭包的理解,问题表达的方式不一样,但是呢,最后都对闭包没有很清晰的理解.所以呢我这边就帮助大家理解什么是闭包.其实说起来,可以深,也可以浅.先由浅着说.之前呢,在网上也是找了不少的资料,看见人家理解的闭包,我提取出了说法有问题 的4点: ​ 1.闭包是指有权访问另一个函数作用域中变量(参数)的函数(不可取) ​ 2.闭包就是能读取其他函数内部变量的函数(不可取) ​ 3.闭包可以理解成定义一个函数内部的函数(不可取) ​ 4.函数就是闭包(不可取) ​ 这4点呢,其实呢,怎么说呢,不能否认它是错的,只能说不严谨,第一点,可以得到一个结论,闭包是一个函数,第二点也差不多的意思,第三点有意思了,定义一个函数内部的函数,的确有这个特征,而第四点,其实也是对的,因为MDN上的解释是:闭包是一个特殊的函数对象.那上面的几种说法都是不严谨的,其实最终我查询资料,都归纳了一句话: ​ 当一个函数能够记住并访问到其所在的词法作用域及作用域链,特别强调是在其定义的作用域外进行的访问,此时该函数和其上层执行上下文共同构成闭包 ​ 怎么理解这句话呢,其中包含两个新的名词,词法作用域及作用域链

python输出第n个默尼森数

╄→гoц情女王★ 提交于 2020-03-07 23:47:06
经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2 P-1,则称M为默尼森数。例如,P=5,M=2 P-1=31,5和31都是素数,因此31是默尼森数。(31是第3个默尼森数) from math import sqrt , pow def prime ( num ) : """检测num是不是质数""" k = sqrt ( num ) for i in range ( 2 , int ( k + 1 ) ) : if num % i == 0 : return False return True def monisen ( no ) : """找出第no个莫尼森数""" n = 0 num = 2 while n < no : m = pow ( 2 , num ) - 1 if prime ( num ) == True and prime ( m ) == True : # 只有num和m都为质数时,n才会加一,即n是莫尼森数的序号 n += 1 num += 1 return int ( m ) , num - 1 # 输出前五个莫尼森数M 以及对应的质数P for i in range ( 1 , 6 ) : print ( monisen ( i ) ) ———————————————— 版权声明:本文为CSDN博主「白王_」的原创文章,遵循

函数二

孤街浪徒 提交于 2020-03-07 20:45:03
函数二 """ - 变量作用域 - 多函数程序执行流程 - 函数的返回值 - 函数的参数 - 拆包和交换两个变量的值 - 引用 - 可变和不可变类型 """ 一. 变量作用域 """ 变量生效的范围: 局部变量 全局变量 """ 1.局部变量 """ 定义在函数体内部的变量,即只在函数体内部生效 """ def testA ( ) : a = 100 print ( a ) testA ( ) # 100 print ( a ) # 报错:name 'a' is not defined 2.全局变量 """ 在函数体内、外都能生效的变量 函数修改变量a的值为200 `testB`函数内部的`a = 200`是定义了一个局部变量 在函数体内部修改全局变量a,加声明global """ a = 100 # 定义全局变量a def testA ( ) : print ( a ) # 访问全局变量a,并打印变量a存储的数据 testA ( ) # 100 def testB ( ) : a = 200 # 此a是局部变量 print ( a ) testB ( ) # 200 print ( f '全局变量a = {a}' ) # 全局变量a = 100 def testc ( ) : global a # global 关键字声明a是全局变量 a = 200 print ( a )

JAVA---N进制转10进制,10进制转N进制

浪尽此生 提交于 2020-03-07 19:52:15
// K进制转10进制 public static int DCHANGE(String NUM, int K) { int NUM_len = NUM.length(); int total = 0; while (NUM_len > 0) { NUM_len -= 1; total += Integer.parseInt(NUM.charAt(NUM_len) + "") * Math.pow(K, NUM_len); } return total; } // 10进制转K进制 public static String RCHANGE(int NUM, int K) { String total = ""; if (NUM == 0) { total = "0"; } else { while (NUM > 0) { String temp = NUM % K + ""; total = temp + total; NUM /= K; } } return total; } 来源: CSDN 作者: bgf_me 链接: https://blog.csdn.net/qq_39882553/article/details/104717792