控制语句

选择结构

条件表达式
  • 条件表达式可以是算术表达式,逻辑表达式,关系表达式
  • 选择和循环结构中,条件表达式为False的情况:

    False,0,0.0,none,空序列对象(空列表,空元祖,空集合,空字典,空字符串等),空range对象,空迭代对象

  • 不能出现赋值操作符

单分支结构

if 3<4<10:   
   print("a")
a=3<4<10
print(a)
print(type(a))

a
True
<class 'bool'>

双分支结构

s=input("请输入一个数字")
if int(s)<10:
    print("s is smaller than 10")
else:
    print("s is larger than 10")

三元条件运算符
num=input("请输入一个数字:")
print(num if int(num)<10 else "too large")

多分支结构

多个条件判断表达式

score=int(input("enter a number:"))
grade=""

if score<60:
    grade="不及格"
elif score<80:
    grade="great"
elif score<90:
    grade="great"
else:
    grade="excellent"

print("score is {0}, grade is {1}".format(score,grade))   #注意用的是花括号

选择结构嵌套

要控制好缩进量

score=int(input("enter a number between 0 and 100:"))
grade=""
if score>100 or score<0:
    score = int(input("wrong! enter a number between 0 and 100:"))
else:
    if score>=90:
        grade="A"
    elif score>=80:
        grade="B"
    elif score>=60:
        grade="C"
    else:
        grade="D"

print("score is:{0},grade is {1}".format(score,grade))

循环结构

循环体里面的语句至少应包含改变条件表达式的语句,以使循环结束

while循环

#计算1到100累加和
i=0
sum=0
while i<=100:
    sum=sum+i
    i=i+1
print(sum)

for 循环

  • 可迭代对象结合使用

  • for 变量 in 可迭代对象:

    循环体语句

  • range的用法:range(起始,终止,步长)包头不包围,是一个迭代器

for x in "abcdefg":   #别忘了冒号
    print(x)
for x in [1,2,3,4,"a"]:
    print(x)
for x in   {"name":"gaogao","age":18}:     #默认是键
    print(x)
for x in   {"name":"gaogao","age":18}.keys():
    print(x)
for x in {"name":"gaogao","age":18}.values():
    print(x)

for x in range(1,10,2):
    print(x)
#输出1到100的总和
sum_all=0
sum_even=0
sum_odd=0
for x in range(101):
    sum_all+=x
    if x%2 == 0:
        sum_even+=x
    else:
        sum_odd+=x
print("总和为:{0},偶数和为:{1},奇数和为:{2}".format(sum_all,sum_even,sum_odd))

嵌套循环

for x in range(5):
    for y in range(5):
        print(x,end="\t")     #每五个一行,用制表符隔开
    print()                 #一行输出结束,换行输出下一行

练习
  • 九九乘法表
for m in range(1,10):
    for n in range(1,m+1):    #乘法表不是全部填满
        print("{0}*{1}={2}".format(n,m,n*m),end="\t")
    print()

  • 列表字典存储表格
r1=dict(name="gaogao",age=18,salary=34000,city="beijing")
r2=dict(name="lili",age=18,salary=33000,city="hunan")
r3=dict(name="wang",age=18,salary=35000,city="changsha")
tb=[r1,r2,r3]
for x in tb:
    if x.get("salary")<34000:
        print(x)

break语句

用于while或者for循环,用来结束整个循环
当循环嵌套,只跳出最近层循环
如果循环有else,也一起跳出

continue语句

用于结束本次循环,继续下一次循环
整体循环仍然在

#break
while True:
    a=input("enter a character,enter q or Q to exit")
    if a.upper()=="Q":      #这个操作改变了a,返回改变后的a值
        print("to the end! exit")
        break
    else:
        print(a)

#continue结束本次循环
num=0
sum_salary=0
salary=[]
while True:
    s=input("enter the salary,,q or Q to end")
    if s.upper()=="Q":       #s.upper()不要忘记括号!!!!!
        print("end")
        break
    if float(s)<0:
        continue
    num+=1
    sum_salary+=float(s)
    salary.append(float(s))
print(num,salary,sum_salary/num)

else语句

循环语句后接else:执行完循环语句再执行else
若循环被break中断,else不被执行

sum=0
salary=[]
for i in range(4):
    s=input("enter the salary,,q or Q to end")
    if s.upper() == "Q":  # s.upper()不要忘记括号!!!!!
        print("end")
        break
    if float(s) < 0:
        continue
    num += 1
    salary.append(float(s))
else:
    print("the record is finished")
print(num,salary,sum_salary/num)

循环代码优化

遵循以下原则:

  1. 尽量减少循环内部不必要的计算
  2. 嵌套循环中,减少内层循环的计算,向外提
  3. 尽量使用局部变量,查询快
  4. 连接多个字符用join
  5. 列表进行插入删除尽量在表尾

zip并行迭代

对多个序列并行迭代
zip()函数在最短序列用完时停止

names=("gaogao","wang","lili")   #用元组
ages=(12,16,18)
jobs=("a","b","c")
for name,age,job in zip(names,ages,jobs):
    print("{0}-{1}-{2}".format(name,age,job))
    
names=["gaogao","wang","lili"]   #用列表和元组的混合也可以
ages=[12,16,18]
jobs=("a","b","c")
for name,age,job in zip(names,ages,jobs):
    print("{0}-{1}-{2}".format(name,age,job))
    

推导式创建序列

从一个或多个迭代式快速创建序列
可以用多个for

列表推导式

a=[x for x in range(5) if x%2]
print(a)
b=[(x,y) for x in range(5) for y in range(5)]    #可以用多个for
print(b)
c=[x for x in "abcdef"]
print(c)
d=[x for x in [{"a":"b","c":"d",},{"a":"b","c":"d",},{"a":"b","c":"d",}]]
print(d)

字典推导式

a="i love you"
s={c:a.count(c) for c in a}
print(s)

集合推导式

a={x**2 for x in range(10) if x%2==0}
print(a)

生成器推导式

生成器是一个可迭代对象,可以用到循环中
生成器只能用一次

a=(x for x in range(10))
for x in a:     #可迭代对象              
    print(x,end=",")
    print(tuple(a))
    print(tuple(a))  #生成器只能用一次,输出为空元组

练习

  • 画同心圆
import turtle

my_color=("red","yellow","blue","green","black")
print(len(my_color))

t=turtle.Pen()      #大写P
t.width(4)      #调整画笔粗细
t.speed(0)      #spped为0时速度最大
a=(x for x in range(5))
for x in a:
    t.penup()
    t.goto(0,-x*50)
    t.pendown()
    t.color(my_color[x%len(my_color)])     #用整除获得索引数
    t.circle(x*50+50)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值