Python用户交互与流程控制

1. 用户交互

  python3通过input实现用户交互,与python2的raw_input一样,接收的值都转换成字符串格式。python2中也有一个input,而python2中的input接收的值不转换,保留原始数据类型,即输入什么就是什么,python3种已经去除。

x = input("请输入:")
print(type(x))
#转换成整数
x = int(input("请输入:"))
print(type(x))

#判断输入字符为数字的方法
num = input("请输入号码:")
if num.isdigit():
num = int(num)
print("num:",num,type(num))
else:
print("输入错误!")

2. 条件判断语句

  条件语句是指根据条件表达式的不同计算结构,使流程流转至不同的代码块。

if(条件):
    ...
else:
    ...
或
if 条件:   #括号可以省略
    ...
else:
    ...
或
if 条件:
    ...
elif 条件:
    ...
else:
    ...

 

score = float(input("input your score:"))
if 90<= score <=100:
    print('A')
elif 80 <= score <90:
    print("B")
elif 60 <= score <80:
    print('C')
elif 0 <=score <60:
    print('D')
else:
    print("Error")

  

3. switch语句的替代方案

  switch语句多用于编写多分支结构的程序,比if...elif...else...语句更清晰,代码可读性更高。但是python没有提供switch语句,可以通过字典实现switch语句的功能。

from __future__ import division

x = 5
y = 2
operator = '*'
res = {
    "+":x+y,
    "-":x-y,
    "*":x*y,
    "/":x/y
}
print(res.get(operator))

  另一种使用switch分支语句的方案是创建一个switch类,处理程序的流转。

class switch(object):
    def __init__(self,value):
        self.value = value
        self.fall = False
        #如果匹配到的case语句中没有break,则fall为True

    def __iter__(self):
        yield self.match    #调用match方法返回一个生成器
        raise StopIteration #StopIteration异常来判断for循环是否结束

    def match(self,*args):
        if self.fall or not args:
            return True
        elif self.value in args:
            self.fall = True
            return True
        else:
            return False

operator = "*"
x = 5
y = 2

for case in switch(operator):   #switch只能用于for in循环中
    if case('+'):
        print(x+y)
        break;
    if case('-'):
        print(x-y)
        break;
    if case('*'):
        print(x*y)
        break;
    if case('/'):
        print(x/y)
        break;
    if case():              #默认分支
        print('---')

  switch语句造成代码不易维护,使源文件臃肿。面向对象的设计中常常对switch语句进行重构,把switch语句分解成若干类。对于简单的switch分支流程可以使用字典来实现。使用字典更容易管理switch,而switch类回到了C、Java的老路上,而且写法更复杂,不值得推荐。

4. 循环语句

  循环语句是指重复执行同一段代码,通常用于遍历集合或者累加计算。

  • while循环
while(表达式):  #()可以省略
    ...
else:
    ...

  当表达式为真时,依次执行while中的语句,知道循环表达式值为False。程序的流程转到else语句,其中else子句可以省略,表达式两边的括号也可以省略。

n = 0;
while n<=10:
    print(n)
    n+=1
else:
    print("输出完毕!")

  

  • for循环

  for循环用于遍历一个集合,一次访问集合中的每个项目。

for 变量 in 集合:
    ...
else:
    ...

  每次循环从集合中取出一个值赋给变量。集合可以是元组、列表、字典等数据结构。最后一次循环结构执行else子句,else子句可以省略。

  for...in...循环通常与range()函数一起使用,range()返回一个列表。

range()函数使用:

for i in range(10): #默认从0开始每次加1直到这个10为止(不包含10)。
    print(i)

for i in range(2,10,2): #默认从2开始,每次加2,直到10为止(不包含10)。
    print(i)

'''
range语法: range(stop) -> range object range(start, stop[, step]) -> range object '''

  

5. break和continue语句

  break:跳出整个循环

  continue:跳出本次循环,继续下次循环

#输出小于5的数
for i in range(10):
    if i ==5:
        break
    print(i)  #0 1 2 3 4


#输出偶数
for j in range(10):
    if j%2 !=0:
        continue
    print(j)  #0 2 4 6 8

  

猜你喜欢

转载自www.cnblogs.com/jmwm/p/9657510.html
今日推荐