python基础-条件分支和循环

以下内容包括 :

  1. 条件分支
  2. 循环
if 表达式:
    执行

我们知道表达式的值为False时,if代码块不会执行,相反为True则会执行,那么怎么确定表达式的值?

在python中,如果一个值的预定义是常量False,数字0,特殊对象None,空序列(如空的字符串或者空列表),空集合,该值的计算结果就是为False,相反为True.


1.条件分支

来一段简单的代码:

x = 5
if x>0:
    print(x)
else:
    print(0)

可以看到需要注意的是一下几点:

  1. if语句并没有圆括号和大括号
  2. :是语法的一部分
  3. 使用缩进来表示它的块结构(4个空格)
if x>0:
    pass #什么都不做

pass如语义所示,什么都不做,它的存在只是代表着一种语义性

以下我们都是以一段代码以及讲解的方式列出,这样理解会更好。

if x >0 :pass

如果只是一个简单语句,我们可以将其放在一行

x = 5
if 0 <= x <= 10:
    print(x)

输出:5

比较运算符可以这么使用,这也是与java语言的不同之处

x = 5
if 0=and x>=10:
    print(x);

输出:5

这段代码和上述的意思是一样的,但是推荐使用第一个,x出现一次而不是两次,易于维护

x = 59
if x <10:
    print('small')
elif x <100:
    print("medium")
else:
    print("huge")

输出:medium

python中没有switch语句,因此我们只能这么做

x = 6
print('x>=0') if(x>=0) else print('x<0')

输出x>=0

# 格式:trueResult if expression else falseResult

条件表达式,相当于java中的三元运算符,只是格式有点怪.if语句如果执行成功,则执行trueResult,失败falseResult

2.循环

count = 3
while count != 0:
    print(count,end='')
    count -= 1
#输出:321

这里使用end=” 可以将数据输入到一行

count = 3
while count != 0:
    print(count,end='')
    if count == 2:
        break
    count -= 1
输出:32

当满足条件的时候,用break语句控制循环的退出

count = 3
while count != 0:
    print(count,end='')
    count -= 1
else:
    print('循环完毕!')
输出:321循环完毕!
--------------------------------------------------
count = 3
while count != 0:
    print(count,end='')
    if count == 2:
        break
    count -= 1
else:
    print('循环完毕!')

输出:32

else可以用在循环中是个非常神奇的东西,如果循环执行完便会执行else中的代码,如果break了,那么else便不会执行

for variable in iterable:
    代码块1
else:
    代码块2

for循环在很多情况下很实用,例如知道遍历的次数
else的工作方式与while相同,也就是说循环完成就会执行。iterable是可遍历的对象,如字符串,一个元组,一个列表,一个字典,或者一个迭代器,如果是字典,遍历的是字典的键。

for char in "helloworld":
    print(char,end = ord(char) )
输出:h e l l o w o r l d 

可见,遍历字符串,就是遍历字符串中的每个字符

for i in range(10):
    print(i,end= ' ')

输出:0 1 2 3 4 5 6 7 8 9

range内置函数会返回一个整数列表

presidents = dict(Washingtom=(1789,1897),Adams=(1797,1801),Jefferson=(1801,1809),Madison = (1809,1817))

for key in presidents:
    print("%s:%d-%d"%(key,presidents[key][0],presidents[key][1]))


输出:
Adams:1797-1801
Jefferson:1801-1809
Madison:1809-1817
Washingtom:1789-1897

如果是遍历字典,我们不需要keys()方法来获取字典的各个键,上述的输出不一定是这个顺序,因为字典的键是无序的。

presidents = dict(Washingtom=(1789,1897),Adams=(1797,1801),
                  Jefferson=(1801,1809),Madison = (1809,1817))
for item in presidents.items():
    print("%s:%d-%d" % (item[0], item[1][0], item[1][1]));

输出的结果和上面的一致,item是一个tuple,遍历第一个的值为(‘Washingtom’,(1789,1897)),因此item[0]的值就是Washingtom.

presidents = dict(Washingtom=(1789,1897),Adams=(1797,1801),
                  Jefferson=(1801,1809),Madison = (1809,1817))
for key in sorted(presidents):
    print("%s:%d-%d" % (key, presidents[key][0], presidents[key][1]))

输出:
Adams:1797-1801
Jefferson:1801-1809
Madison:1809-1817
Washingtom:1789-1897

如果想要按次序的输出,那么可以用sorted()函数字典排序,而实际上,sorted()函数是对字典的键进行排序.上面的代码也等价于:

keys = presidents.keys();
sorted(keys)
for key in keys:
    print("%s:%d-%d" % (key, presidents[key][0], presidents[key][1]))

输出:
Adams:1797-1801
Madison:1809-1817
Washingtom:1789-1897
Jefferson:1801-1809
for x in range(-5,6):
    if x == 0:
        continue
    print(1.0/x)

continue x == 0 的时候跳出循环,这样就不会造成除0的异常。

总结
1,python的条件分支if,:是语法的一部分,pass代表一种什么也不做的语义性,按照python的风格,缩进是4个空格。
2,循环的两种方式:while和for,并且它们两者都有else,即是在循环正常执行完毕的时候才会执行,如果遇到break跳出循环,else是不会执行的。
3,continue 可以跳出本层的循环
4,range()生成一个列表,我们可以方便的使用它来控制遍历的次数
5,如何遍历一个字典,因为字典的键是无序的,那么可以使用sorted()函数来有序的遍历它。
6,print(x,end=”“) end可以控制输出变量的末尾值

你可能感兴趣的:(Python)