05- 条件控制语句

1.1 条件判断语句(if语句)

1.1.1 单分支选择结构

单分支选择结构语法如下所示,其中表达式后面冒号“:”是不可缺少的,表示一个语句块的开始,并且语句块必须做相应的缩进,议案是以四个空格为缩进单位。

if 表达式:
    语句块

在这里插入图片描述

当表达式的值为True或其他与True等价的值时,表示条件满足语句块被执行,否则该语句块不被执行,而是继续执行后面的代码。下面的代码演示了单分支选择结构的法:

x = input('Input two numbers:')
a,b = map(int,x.split())
if a>b :
    a,b = b,a    #序列解包,交换两个变量的值
print(a,b)

在Python中,代码的缩进非常重要,所及你是体现代码逻辑关系的重要方式,同一个代码块必须保证相同的缩进量。在实际开发中,只要遵循一定的约定,Python代码的排版是可以降低要求的。例如下面的代码,虽然不建议这样写,但确实是可以执行的。

>>> if 3>2:print('ok')
...
ok
>>> if True:print(3);print(5)
...
3
5

1.2 基本输入输出

input()和print()是python的基本输入输出参数,前者用来接收用户的键盘输入,后者用来把制定的格式输出到标准控制台或者指定的文件对象。不论用户输入什么内容,input()哟率作为字符串对待,必要时可以使用内置函数Int(),float()或eval()对用户输入的内容进行转换。

>>> x = input('Please input:')
Please input:345
>>> x  
'345'
>>> type(x)  #把用户的输入作为字符串对待
<class 'str'>
>>> int(x)   #转换为整数
345
>>> eval(x)   #对字符串求值。或类型转换
345
>>> x=input('Please input:')
Please input:[1,2,3]
>>> x
'[1,2,3]'
>>> type(x)
<class 'str'>
>>> eval(x)
[1, 2, 3]
>>> x=input('Please input:')    #不论用户输入了什么,都作为一个字符串来对待
Please input:'hello world'
>>> x
"'hello world'"    #不论用户输入了什么,都作为一个字符串来对在
>>> eval(x)    #如果本来就想输入字符串,就不用输入引号了。
'hello world'

该函数用来获取用户的输入,input()调用后,程序会立即暂停,等待用户输入,用户输入完内容之后,点击回车程序才会继续向下执行。输入完成以后,其所输入的内容会以返回值的形式返回。
用户
内置函数print()用户输出信息到标准控制台或指定文件,语法格式为:

print(value1,value2,...,sep='',end='\n',file=sys.stdout.flush=False)

其中。seq参数之前为需要输出的内容(可以有多个);sep参数用于指定数据之间的分割符,默认为空格。file参数用于指定输出位置,默认为标准控制台,也可以重定向输出到文件。例如:

>>> print(1,3,5,7,sep='\t')   #修改默认分隔符
1       3       5       7
>>> for i in range(10):  #修改end参数,每个输出之后不换行
...     print(i,end=' ')
0 1 2 3 4 5 6 7 8 9
>>> with open('test.txt','a+') as fp:
...     print('Hello World!',file=fp)   #重定向,将内容输出到文件中

1.3 双分支选择结构

双分支选择结构的语法为:

if 表达式:
    语句块1
else:
    语句块2

当表达式的值为True或其他等价值时,执行语句块1,否则执行语句块2。语句块1或语句块2总有一个会执行,然后执行后面的代码,如图所示:
在这里插入图片描述
下面的代码通过鸡兔同笼问题演示了双分支结构的用法。

jitu,tui=map(int,input('请输入鸡兔总数和腿总数:').split())
tu=(tui-jitu*2)/2
if int(tu) == tu:
    print('鸡:{0},兔{1}'.format(int(jitu-tu),int(tu)))
else:
    print('数据不准确,无解')

另外,python还提供了一个三元运算符,并且在三元运算符构成的表达式中还可以嵌套三元运算符,可以实现与选择结构相似的结果。

value1 if condition else value2

当表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。另外,value1和value2本身也是复杂表达式,也可以包含函数调用,甚至可以是三元运算构成的表达式。这个结构的表达式也具有惰性求值的特点。

>>> a=5
>>> print(6) if a>3 else print(5)
6
>>> print(6 if a>3 else 5)   #虽然结果与上一行代码一样,但代码含义不同
6
>>> b=6 if a>13 else 9   #赋值运算符的优先级非常低
>>> b
9
>>> x=math.sqrt(9) if 5>3 else random.randint(1,100)  #还没导入math模块
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined
>>> import math
>>> x=math.sqrt(9) if 5>3 else random.randint(1,100) #还没导入random模块,但表达式5>3的值为True,所以可以正常运行
>>> x=math.sqrt(9) if 2>3 else random.radnint(1,100)  #条件表达式2>3的值为False,需要计算第二个表达式,但此时还没导入random.所以出错。
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'random' is not defined
>>> import random      #导入random,成功执行。
>>> x=math.sqrt(9) if 2>3 else random.randint(1,100)

虽然三元运算符可以嵌套使用,可以实现浮渣的多分支选择结构的效果,但这样的代码可读性非常的差,不建议使用,在下面的代码中,函数的定义为f=lambda x:x*x

>>> f=lambda x:x *x
>>> x=3
>>> (1 if x>2 else 0) if f(x)>5 else ('a' if x<5 else 'b')
1
>>> x=0
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值