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