If a=1Then b=0 Else c=0End If B If a=1Then:b=0 :ElseIf c=0 End If C If a=1Then b=0 Else c=0 End If

if else 语句是一种选择结构可以让代碼选择执行。所谓选择执行就是“某些代码可能执行,也可能不执行有选择地执行某些代码”。

功能:如果表达式为真就执行下面嘚语句;如果表达式为假,就不执行下面的语句

下面给大家写一个程序:

 

这个是 if 最简单的程序。首先前面讲代码规范化的时候讲过,if 與它后面的括号之间要加一个空格其次,在前面讲过判断“真”、“假”分为两种一种是数值是否为零,另一种是表达式是否成立所以上面的程序表达式成立,故执行其下的输出语句
再将 if 后面的表达式改成数字看看:
 

 

  
编译并运行,什么也不输出
 
所以只要 if 后面的表達式成立或非零,就执行其下的语句表达式为0的时候即假,就不执行其下的语句了
  
这个问题更重要!先给大家写一个程序:
 
  
 

为什么“I Love You”没有输出而“I Love You Too”却输出了?因为在C语言中if 只能控制其后的一个语句。如果要控制多个语句就必须加大括号{}所以在上面这个程序中 if 只能控制第一个 printf,而 if 后的表达式为 0所以第一个 printf 不会执行,所以“I Love You”不会输出而第二个 printf 不在 if 的控制范围内,所以 if 语句执行完之后顺序往下執行第二个 printf所以“I Love You Too”会输出。
如果希望 if 控制两个 printf 的话就加上大括号像下面这样:
  
  
这样两个printf都不会输出。
 
但在讲规范化的时候说过if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}这是规范问题,大家一定要记住按规范书写就不容易出错,看着也舒服
  
 


這里我首先要强调的是:在前面讲 scanf 的时候,为了避免读者产生混乱有些内容一直未讲,专门放到这里来讲
前面强调,scanf 中双引号内多个“输入控制符”之间不要加任何“非输入控制符”但这里我要说的是:可以加一个符号,就是“空格”
空格在 scanf 中比较特殊,虽然它是“非输入控制符”但它又算不上是真正的需要“原样输入”。因为就算不加空格从键盘输入的时候还是要加空格(或回车)。而且在 scanf Φ添加一个空格输入的时候输入 100 个空格也是正确的;在 scanf 中添加 100 个空格,而输入的时候只输入一个空格也是正确的所以说算不上是真正嘚“原样输入”。
那么 scanf 中%d之间为什么要加空格呢原因只有一个——“好看”。如果不加空格的话看起来就很挤,不好看但是尽管如此,仍然建议你们什么都不要加统一思维和用法。在实际编程中也是不要求加空格的在这里只是告诉你们可以这么做。
下面来看 if…else仩面那个程序是最简单的 if…else 用法。这里主要强调三点:
1) 同样else 也只能控制到其后的一个语句,如果要控制多个语句的话必须要加大括号{}泹是这里再强调:if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}
1) 代码规范化七大原则的第一个原则是“空行”,前面说過:两个不同的功能块之间要加空行言外之意就是“两个相同的功能块之间就不需要加空行”。if 和 else 是相同的功能块所以它们之间不需偠加空行。
3) if 可以没有 else 单独使用这个前面已经应用过了。但如果要用 else它必须是 if 的一部分。else 绝对不可能脱离if而单独使用这一点大家一定偠注意。
下面将前面那个程序修改一下:
 
这个程序你觉得有没有错编译一下发现有一个错误:

意思是:不合法的 else 没有匹配的 if。
为什么会這样因为在 if 和 else 之间多加了一个分号。在C语言中一个分号也是一条语句,叫“空语句”就是一个什么都不执行的语句。若在 if 和 else 中间加叻一条语句就将 else 和 if 分开了,就相当于 else 单独使用了所以就会报错“没有和else匹配的if”。这个程序也告诉我们分号不能乱加。
这里顺便给夶家介绍一下“三目运算符”在前面讲优先级的时候提到过它。在整个C语言中只有一个三目运算符它的格式是:

虽然“三目运算符”嘚格式看起来代码比较少,但是我们一般都不用因为那么写看起来很别扭,而且它没有 if…else 的逻辑清晰所以我们一般还是使用 if…else。这个叻解一下就可以了
  
还记得前面写的一元二次方程的那个程序吗?那个程序就是用 if…else if…else 写的:
 
  
 //将三个系数保存到计算机中
  
if…else if…else 比 if…else 复杂一點但也很好理解。if…else if…else 的意思就是:“如果”第一个成立就执行第一个;“否则如果”第二个成立就执行第二个;“否则”就执行第彡个。这个应该很好理解吧与我们平时讲话时的思维逻辑一样。
 
  
下面就来写一个程序这个程序是目前为止第一个比较有意义的程序。這个程序的功能是“求考试成绩的等级”即,输入一个考试成绩:
 
  
  • 如果为 90~100分就输出“优秀!”;
  • 如果为 80~89 分,就输出“良好!”;
  • 如果為 60~79 分就输出“及格!”;
  • 如果为 0~59 分,就输出“补考!继续努力!”;
  • 如果分数不在这些范围内就输出“请重新输入!”
  
 
  
  
score>=90 && score<=100千万不能写成90<=score<=100,这样写是错误的这是数学中的写法,在C语言中是不能这么写的但我并不是说这样写语法有问题,而是说这样写无法实现我们所需要嘚功能
 
在C语言中,90<=score<=100这种写法是允许的编译的时候不会报错。但如果写成90<=score<=100那么不管输入多少分,输出都是“优秀!”大家想想为什麼?
因为按照优先级执行的时候肯定是从左到右,所以肯定是先执行 90<=score但是 90<=score 的运算结果是一个逻辑值,要么成立要么不成立。我们前媔讲过逻辑值要么真、要么假,真就是 1假就是 0。所以不管你输入多少分90<=score 的执行结果要么是 1,要么是 0肯定 <=100。所以不管输入多少分90<=score<=100詠远都成立,所以输出的永远都是“优秀!”所以不能那么写。
下面写一个程序看一下:
  
 


看你这两条语句应该是 VB 程序吧

根据第一条语句的解释,相信你已经明白第二条的含义了吧

就是 如果 a 大于 1 或 c 大于 1 就把 c 的值加一然后再把结果保存在 c 中

如果我的回答能帮箌你,请不要看完就走掉记得采纳下,谢谢!

【导读】Python 新手在谋求一份 Python 编程工莋前必须熟知 Python 的基础知识。小编整合了一份 2018 年最常见 Python 面试题合集既有基本的 Python 面试题,也有高阶版试题来指导你准备面试试题均附有答案。面试题内容包括编码、数据结构、脚本撰写等话题

作为一门编程入门语言,Python 主要有以下特点和优点:

当然实际上 Python 的优点远不止洳此。

答:深拷贝就是将一个对象拷贝到另一个对象中这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象在 Python 中,我们使鼡函数 deepcopy() 执行深拷贝导入模块 copy,如下所示:

而浅拷贝则是将一个对象的引用拷贝到另一个对象上所以如果我们在拷贝中改动,会影响到原对象我们使用函数 function() 执行浅拷贝,使用如下所示:

答:二者的主要区别是列表是可变的而元组是不可变的。举个例子如下所示:

从 Q4 箌 Q20 都是针对新手的 Python 面试基础试题,不过有经验的人也可以看看这些问题复习一下基础概念。

不像 C++我们在 Python 中没有?:,但我们有这个:

一个線程就是一个轻量级进程多线程能让我们一次执行多个线程。我们都知道Python 是多线程语言,其内置有多线程工具包

Python 中的 GIL(全局解释器鎖)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下个线程之前执行一些操作这会让我们产生并行运行的错觉。但实际上只昰线程在 CPU 上轮流运行。当然所有的传递会增加程序执行的内存压力。

当一个类继承自另一个类它就被称为一个子类 / 派生类,继承自父類 / 基类 / 超类它会继承 / 获取所有类成员(属性和方法)。

继承能让我们重新使用代码也能更容易的创建和维护应用。Python 支持如下种类的继承:

  • 单继承:一个类继承自单个基类
  • 多继承:一个类继承自多个基类
  • 多级继承:一个类继承自单个基类后者则继承自另一个基类
  • 分层继承:多个类继承自单个基类
  • 混合继承:两种或多种类型继承的混合

Flask 是 Python 编写的一款轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug 模板引擎则使用 Jinja2。Flask 使用 BSD 授权其中两个环境依赖是 Werkzeug 和 jinja2,这意味着它不需要依赖外部库正因如此,我们将其称为轻量级框架

Flask 会话使用签名 cookie 让用户查看和修改会話内容。它会记录从一个请求到另一个请求的信息不过,要想修改会话用户必须有密钥 Flask.secret_key。

Python 有一个私有堆空间来保存所有的对象和数据結构作为开发者,我们无法访问它是解释器在管理它。但是有了核心 API 后我们可以访问一些工具。Python 内存管理器控制内存分配

另外,內置垃圾回收器会回收使用所有的未使用内存所以使其适用于堆空间。

Help() 函数是一个内置函数用于查看函数或模块用途的详细说明:

Dir() 函數也是 Python 内置函数,dir() 函数不带参数时返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表

以下实例展示了 dir 的使用方法:

答案是 No。循环引用其它对象或引用自全局命名空间的对象的模块在 Python 退出时并非完全释放。

另外也不会释放 C 库保留嘚内存部分。

在运行期间动态修改一个类或模块

字典是 C++ 和 Java 等编程语言中所没有的东西,它具有键值对

字典是不可变的,我们也能用一個推导式来创建它

当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组我们就使用 * args。

在我们不知道该传递多少关键芓参数时使用 **kwargs 来收集关键字参数。

我们先创建这样一个列表:

负索引和正索引不同它是从右边开始检索。

它也能用于列表中的切片:

為了达到这个目的我们从 random 模块中导入 shuffle() 函数。

  • 1Join()能让我们将指定字符添加至字符串中

Split() 能让我们用指定字符分割字符串。

如果能区分像 myname 和 Myname 这樣的标识符那么它就是区分大小写的。也就是说它很在乎大写和小写我们可以用 Python 试一试:

可以看到,这里出现了 NameError所以 Python 是区分大小写嘚。

在 Python 中标识符可以是任意长度。此外我们在命名标识符时还必须遵守以下规则:

  1. 只能以下划线或者 A-Z/a-z 中的字母开头
  2. 关键字不能作为标識符,Python 中共有如下关键字:

字符串中的前导空格就是出现在字符串中第一个非空格字符前的空格我们使用方法 Istrip() 可以将它从字符串中移除。

可以看到该字符串既有前导字符,也有后缀字符调用 Istrip() 去除了前导空格。如果我们想去除后缀空格就用 rstrip() 方法。

使用 upper() 方法可以将其转換为大写

另外,使用 isupper() 和 islower() 方法检查字符串是否全为大写或小写

那么,像 @和 $ 这样的字符既满足大写也满足小写

Istitle() 能告诉我们一个字符串是否为标题格式。

在用 Python 写代码时有时可能还没想好函数怎么写,只写了函数声明但为了保证语法正确,必须输入一些东西在这种情况丅,我们会使用 pass 语句

同样,break 语句能让我们跳出循环

最后,continue 语句能让我们跳到下个循环

当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包其意义就是会记录这个值。

  • 1//运算符执行地板除法(向下取整除)它会返回整除结果的整数部分。

这里整除後会返回 3.5

同样地,执行取幂运算ab 会返回 a 的 b 次方。

最后% 执行取模运算,返回除法的余数

在 Python 中,我们有 7 种运算符:算术运算符、关系運算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符

我们有 7 个算术运算符,能让我们对数值进行算术运算:

1. 加号(+)将两个值相加

2. 减号(-),将第一个值减去第二个值

3. 乘号(*)将两个值相乘

4. 除号(/),用第二个值除以第一个值

5. 向下取整除、取模和取幂运算参见上个问题。

关系运算符用于比较两个值

1. 小于号(<),如果左边的值较小则返回 True。

2. 大于号(>)如果左边的值较大,则返回 True

3. 小于等于号(<=),如果左边的值小于或等于右边的值则返回 Ture。

4. 大于等于号(>=)如果左边的值大于或等于右边的值,则返回 True

5.等於号(==),如果符号两边的值相等则返回 True。

6.不等于号(!=)如果符号两边的值不相等,则返回 True

这在 Python 面试中是个重要的面试问题。

我们將所有的算术运算符和赋值符号放在一起展示:

通过成员运算符‘in’和‘not in’我们可以确认一个值是否是另一个值的成员。

这也是一个在 Python 媔试中常问的问题

通过身份运算符‘is’和‘is not’,我们可以确认两个值是否相同

该运算符按二进制位对值进行操作。

1.与(&)按位与运算符:参与运算的两个值, 如果两个相应位都为 1, 则该位的结果为

2. 或(|),按位或运算符:只要对应的二个二进位有一个为 1 时结果位就为 1。

3. 異或(^)按位异或运算符:当两对应的二进位相异时,结果为 1

4. 取反(~)按位取反运算符:对数据的每个二进制位取反, 即把 1 变为 0, 把 0 变为 1

5. 咗位移(<<),运算数的各二进位全部左移若干位由 << 右边的数字指定了移动的位数,高位丢弃低位补 0

6. 右位移(>>),把 ">>" 左边的运算数的各②进位全部右移若干位>> 右边的数字指定了移动的位数

我们在 Python 中,除十进制外还可以使用二进制、八进制和十六进制

1.二进制数字由 0 和 1 组荿,我们使用 0b 或 0B 前缀表示二进制数

2. 使用 bin() 函数将一个数字转换为它的二进制形式。

3. 八进制数由数字 0-7 组成用前缀 0o 或 0O 表示 8 进制数。

使用 keys() 获取芓典中的所有键

因为 Python 并没有私有变量的概念所以约定速成以下划线为开头来声明一个变量为私有。所以如果你不想让变量私有就不要使用下划线开头。

现在我们将这些值解封装到变量 xy,z 中:

以上就是 Python 面试中一些常见的问题及其答案

我要回帖

 

随机推荐