03条件、循环和其他语句

# -*- coding: utf-8 -*-
#===============================================================================
#第三章 条件、循环和其他语句

'''
目录
3.1 神奇的print函数
3.2 有趣的赋值操作
3.3 用缩进创建代码块
3.4 条件和条件语句
3.4.1 布尔值和布尔变量
3.4.2 条件语句(if、else和elif)
3.4.3 嵌套代码块
3.4.4 比较运算符
3.4.5 断言
3.5 循环
3.5.1 while循环
3.5.2 for循环
3.5.3 跳出循环
3.5.4 循环中else语句
3.6 使用exec和eval执行求值字符串
'''


#3.1神奇的print函数

#===============================================================================
# print("a","b","c","d")的输出结果会在四个字符串间自动加入空格
# 如果中间不想用空格分隔,有两种方法:
# 1.字符串的拼接改为 "a"+","+"b"
# 2.在print()中使用spe="x" x是你想用来分隔的字符
# print()输出的字符串会在末尾自动换行,即 \n
# 如果不想字符串换行,可以在print()中使用end=""
#===============================================================================
'''
#测试
print("name =","Bill")
print("age =",30)
print("Apple"+","+"Orange"+","+"Banana")
print("Apple","Orange","Banana",sep=",")
print("I","Love","You",sep="&")
print("Hello",end=" ")#空格结尾
print("World")
print("a",end="")
print("b",end="")
print("c")
'''


#3.2有趣的赋值操作

#===============================================================================
# 序列解包特性:
# 可以同时把多个值赋值给多个变量:x,y,z=1,2,3
# 可以同时把A的值赋值给B,把B的值赋值给A:x,y=y,z
# 支持链式赋值:
# 可以将一个值赋值给多个变量:x=y=1
# 增量赋值:将变量自身增加或减小(负增量)指定值
# x=x+2 可以写成 x +=2,,,x=x*20 可以写成 x *=20
#===============================================================================
'''
#测试
x,y,z=1,2,3
print(x,y,z)
x,y=y,x
print(x,y)
x=y=20
print(x,y)
x*=2
x%=3
print(x)
'''


#3.3用缩进创建代码块

#===============================================================================
# tab字符可以缩进语句形成代码块
# 一个tab字符为8个空格
# Python标准使用4个空格的方式创建代码块
# : 冒号表示代码块的结尾
#===============================================================================


#3.4条件和条件语句

#===============================================================================
# 3.4.1布尔值和布尔变量
# 布尔类型boolean有两个值:True和False
# True==1 False==0 == 符号是逻辑运算符,左右两边如果相等结果就是True,如果不相等结果就是False
# bool() 有一个参数,参数为空时是False,不为空时是True
#===============================================================================

#===============================================================================
# 3.4.2条件语句(if、else和elif)
# if的作用就是代码转弯,根据if后面参数得出布尔值来判断执行的代码
# if 逻辑表达式 :
# #这行会自动形成4个空格
# elif 逻辑表达式 :
# #这行会自动形成4个空格
# elif 逻辑表达式 :
# #这行会自动形成4个空格
# else :
# #这行会自动形成4个空格
#===============================================================================
'''
#测试
from click._compat import raw_input
name=raw_input("请输入您的名字:")
if name.startswith("B"):
print("名字以B开头")
elif name.startswith("C"):
print("名字以C开头")
else:
print("名字以其他字母开头")
'''

#===============================================================================
# 3.4.3嵌套代码块
# 条件语句可以嵌套,即在条件语句中可以有其他条件语句
# 外面的代码块可以说是里面的代码块的父代码块
#===============================================================================
'''
#测试
name=input("你叫什么名字:")
if name.startswith("B"):
if name.endswith("l"):
print("欢迎"+name+"先生")
elif name.endswith("o"):
print("欢迎"+name+"先生")
else:
print("未知姓名")
elif name.startswith("李"):
if name.endswith("宁"):
print("欢迎"+name+"先生")
else:
print("未知姓名")
else:
print("未知姓名")
'''

#===============================================================================
# 3.4.4比较运算符
# x==y x<y x>y x>=y x<=y x!=y
# x is y x和y是同一个对象 x is not y x和y不是同一个对象
# x in y x是y容器的成员 x not in y x不是y容器的成员
# 字母大小写不相等
# 字母也能用大小写比较,此时是按照的ASCII表值比较
# x=y=[1,2,3]
# z=[1,2,3]
# x==z和x is y 结果是True,,,,x is z 结果是False
# in 和 not in用来判断某个值是否是某个列表的一个成员,也可以用来判断某个字符串是否是另外一个字符串的子字符串
# 判断多个逻辑表达式时可以用 与and 或or 非not
#===============================================================================
'''
#测试
print(20==30)
x=20
y=40
print(x<y)
if x>y:
print("x>y")
else:
print("x<=y")
s1="hello"
s2="Hello"
if s1>=s2 and x>y:
print("满足条件")
elif not s1<s2:
print("基本满足条件")
else:
print("不满足条件")
'''

#===============================================================================
# 3.4.5断言
# 断言的使用类似于if。只是如果是False就会直接报错,用于测试BUG,函数assert
#===============================================================================
'''
#测试
name="Bill"
assert name=="Bill"
age=20
assert 0<age<10,"年龄必须小于十岁"
print("hello world")#这一行就不会执行
'''


#3.5循环

#===============================================================================
# 3.5.1while循环
# while 后面的参数为True时,就会一直执行下面代码块的操作
#===============================================================================
'''
#测试
x=1
while x<=10:
print(x)
x+=1
'''

#===============================================================================
# 3.5.2for循环
# for循环主要用于对一个集合进行循环(序列和其他可迭代的对象),会挨个从集合中取一个元素执行代码块
# 函数range有两个参数,一个是数值范围的最小值,一个是数值范围的最大值+1
# 如果函数range只有一个参数,那么最小值就是0
# 如需要1到10的10个数的列表,可以是range(1,11)
#===============================================================================
'''
#测试
print(1,end=" ")
print(2,end=" ")
print(3,end=" ")
print(4,end=" ")
print(5,end=" ")
print(6,end=" ")
print(7,end=" ")
print(8,end=" ")
print(9,end=" ")
print(10,end=" ")
print("用while输出1到10")
x=1
while x<=10:
print(x,end=" ")
x+=1
print("\n用for输出1到10")
numbers=[1,2,3,4,5,6,7,8,9,10]
for num in numbers:
print(num,end=" ")
print("\n用for输出1到20")
numbers=range(1,21)
for num in numbers:
print(num,end=" ")
print("\n用for输出0到20的平方")
for num in range(21):
print(num*num,end=" ")
'''

#===============================================================================
# 3.5.3跳出循环
# while循环如果需要在中途退出,则要使用到break语句和continue
# 区别是continue是退出本次while循环,而break是彻底退出while循环
# break语句和continue也适用于for循环和嵌套循环
#===============================================================================
'''
#测试
x=0
while x<100:
if x==5:
break;
print(x,end=" ")
x+=1
print("\nbreak在for循环中的应用")
names=["Bill","Mike","Mary"]
for name in names:
if not name.startswith("B"):
break;
print(name)
print("continue在for循环中的应用")
for name in names:
if name.startswith("B"):
continue;
print(name,end=" ")
print("\n嵌套循环")
arr1=[1,2,3,4,5]
arr2=["A","B","C"]
arr=[arr1,arr2]
i=0
while i<len(arr):
for value in arr[i]:
print(value,end=" ")
i+=1
print()
'''

#===============================================================================
# 3.5.4循环中的else语句
# 无法直接判断循环语句是否是中断的,可以用else判断
#===============================================================================
'''
#测试
import random
x=0
while x<10:
if x==random.randint(1,20):
print(x)
break;
x+=1
else:
print("没有中断while循环")
numbers=[1,2,3,4,5,6]
for num in numbers:
if num==random.randint(1,12):
print(num)
break;
else:
print("正常退出循环")
'''


#3.6使用exec和eval执行求值字符串

#===============================================================================
# exec函数的三个使用方法:
# 一个参数时:字符串。,可以把字符串按照代码执行。如exec("print(1234)")
# 两个参数时:字符串,对象。此时字符串为局部变量,可以通过对象.keys()调用。如scope={} exec("a=13",scope)
# 三个参数时:在二的基础上,会给对象添加个字典,用于字符串中的多个变量。如args={'a':20,'b':30} exec('print(a+b)',scope,args)
#===============================================================================
'''
#测试
scope={}
codes=""
print(">>>",end="")
while True:
code=input("")
if code=="":
exec(codes, scope)
codes=""
print(">>>",end=" ")
continue
codes+=code+"\n"
'''


'''
#练习题
#1.判断x是奇数还是偶数
x=21
if x%2==0:
print("x是偶数")
else:
print("x是奇数")
#2.控制台输入一个数x,判断是奇数还是偶数,循环执行,直到输入end退出循环
while True:
x=input("请输入一个数:")
if x=="end":
print("退出while循环")
break;
elif int(x)%2==0:
print(x+"是偶数")
else:
print(x+"是奇数")
#3.使用while循环打印菱形,要求控制台输入行数,且必须是奇数
x=input("请输入一个奇数:")
x=int(x)
i=1
while True:
if x%2==0:
x=input("您输入的是偶数,请重新输入一个奇数:")
x=int(x)
continue
while i<=2*x:
if i%2==0:
i+=1
continue
if i<=x:
a=int(((x-i)/2))
b=i
else:
a=int(((i-x)/2))
b=2*x-i
print(a*" "+b*"*")
i+=1
break
#4.用eval函数编写控制台的计算机,可以计算控制台输入的表达式,循环执行,直到输入end退出循环
while True:
a=input("请输入表达式:")
if a=="end":
break
print("计算结果:",a,"=",eval(a))
'''


#===============================================================================
# #拓展
# a="Hello"
# b=8
# print("{0: ^{1}}".format(a,b))
#===============================================================================

#===============================================================================
# #改练习题3
# x=input("请输入一个奇数:")
# x=int(x)
# i=1
# while True:
# if x%2==0:
# x=input("您输入的是偶数,请重新输入一个奇数:")
# x=int(x)
# continue
# while i<=2*x:
# if i%2==0:
# i+=1
# continue
# if i<=x:
# a=int(((x-i)/2))
# b=i
# else:
# a=int(((i-x)/2))
# b=2*x-i
# print("{0:^{1}}".format(b*"*",x))
# i+=1
# break
#===============================================================================

猜你喜欢

转载自www.cnblogs.com/zengsen666/p/12093359.html