欢迎来到 Kong Xiangqun 的博客

day5.流程控制及while单项循环

一、判断类型 isinstance

1、语法

"""
语法:
    # 用法一
    isinstance(要判断的值,要判断的类型) 返回True 或者 False
    # 用法二
    isinstance(要判断的值,(可能的类型1,可能的类型2,可能的类型3 ...  ) ) 如果有一个类型满足,返回的是True 否则 返回False
    
数据类型:
int float bool complex str list tuple set dict
"""

1.1、用法一

res = isinstance(5,int)
res = isinstance("11223344",str)
res = isinstance([1,2,3],tuple)
print(res)

1.2、用法二

res = isinstance(16, (str,list,tuple)  )
print(res)

二、代码块

1 以冒号作为开始,用缩进来划分作用域
2 作用域:作用的区域,作用的范围
if 10 == 10: # True 执行
    print(1)
    print(2)
    print(3)
print(4)

if 10 == 11: # False 不执行
    print(11)
    print(22)
    print(33)
print(44)

1、代码块的注意点

"""要么全都是一个tab缩进,要么全都是4个空格,不能混合使用"""
if 10 == 10:
    print(100)
    print(200) # IndentationError
    
    
# php js .... (了解)
"""
if(10 == 10){
    print(1)
                print(2)
                            print(3)
}
"""
注意点

三、流程控制

流程: 代码执行的过程
控制: 对代码执行过程的一种把控

 1 三大结构:
 2 1.顺序结构 : 默认代码依次从上到下执行
 3 2.分支结构 : 4种
 4 3.循环结构 : for  while
 5 
 6 分支结构:
 7     (1)单项分支
 8     (2)双项分支
 9     (3)多项分支
10     (4)巢状分支

1、单项分支

语法:

"""
if 条件表达式:
    code1
    code2
当条件表达式成立,返回True,执行对应的代码块,反之不执行
"""

例:

name = "jack"
if liucaixia == "jack":
    print("yes")

2、双向分支

语法:

"""
if 条件表达式:
    code1
    code2
else:
    code3
    code4
如果条件表达式成立,执行if对应的代码块
如果条件表达式不成立,执行else对应的代码块

if   代码块也叫做真区间
else 代码块也叫做假区间

"""

例:

name = "jack"
if liucaixia == "jack":
    print("yes")else:
    print("no")

举例:

 1 按要求写一段代码
 2 """
 3 name = input("请输入姓名")
 4 print(name , type(name))
 5 """
 6 
 7 """
 8 网站登录功能:
 9     提示用户输入对应的用户名和密码
10     如果用户名admin,密码000
11     提示用户,登录成功
12     否则提示,登录失败
13 """
username = input("请输入您的用户名:")
password = input("请输入您的密码:")
if username == "admin" and password == "000":
    print("登录成功~")
else:
    print("登录失败~")

四、多项分支

语法:

"""
语法:
if 条件表达式1:
    code1
    code2
elif 条件表达式2:
    code1
    code2
elif 条件表达式3:
    code1
    code2
else:
    code...
    
如果条件表达式1成立,返回True,执行对应的代码块,反之则向下执行
如果条件表达式2成立,返回True,执行对应的代码块,反之则向下执行
如果条件表达式3成立,返回True,执行对应的代码块,反之则向下执行
直到最后,任何条件都不满足,执行else这个分支的代码块.


elif 可以出现0次或者多次
else 可以出现0次或者1次
"""

1、双项分支

flag = True
# 双项分支
if flag == True:
    print("yes")
else:    
    print("no")

2、多项分支

youqian = False
youfang = False
youche = False
youyanzhi = False
youtili = False

if youqian == True:
    print("我娶你1")
elif youfang == True:
    print("我娶你2")
elif youche == True:
    print("我娶你3")
elif youyanzhi == True:
    print("我娶你4")
elif youtili == True:
    print("我娶你5")
    
else:
    print("你是个好人")

3、巢状分支(单项分支、双项分支、多项分支的互相嵌套)

youqian = False
youfang = False
youche = False
youyanzhi = False
youtili = False


if youqian == True:
    if youfang == True:
        if youche == True:
            if youyanzhi == True:
                if youtili == True:
                    print("^-^ 一定要娶你")
                else:
                    print("......")
            else:
                print("...")
else:
    print("No")
巢状分枝

 

五、循环结构

1、while循环

语法:

"""
语法:
    while 条件表达式:
        code1...
        code2...
        
1.初始化一个变量
2.写上循环的判断条件
3.自增自减的变量值
"""

例:打印1~100

i = 1
while i <= 100:
    # 在这个位置写要执行的逻辑
    print(i)
    i += 1 # i = i + 1

执行过程:

"""
初始化一个变量i
第一次循环
i = 1 , i<=100 成立返回True,执行循环
print(1)
i += 1 => 2

第二次循环
i = 2 , i<=100 成立返回True,执行循环
print(2)
i += 1 => 3

第三次循环
i = 3 , i<=100 成立返回True,执行循环
print(3)
i += 1 => 4
....

什么时候结束?
当i = 101时候, 判断i <= 100 不成立返回False ,不执行循环
循环结束...
"""
执行过程

例:计算1~100的累加和

方法一、

i = 1
total = 0
while i<=100:
    # 把所有的i值全部累加到total这个变量中
    total += i # total = total + i
    i+=1

print(total)

代码解析:

"""
# 代码解析:
第一次循环
i = 1 i<=100 成立执行循环
total += i => total = total + i => 0 + 1
i+=1 => 2


第二次循环
i = 2 i<=100 成立执行循环
total += i => total = total + i => 0 + 1 + 2
i+=1 => 3

第三次循环
i = 3 i<=100 成立执行循环
total += i => total = total + i => 0 + 1 + 2 + 3
i+=1 => 4

....
依次循环

什么时候结束?
i = 100 
total = 0 + 1 + 2 + 3 + 4 + ...+ 100 = 5050
当i = 101 不满足循环的条件 , 直接跳出,循环结束..
到此打印 5050 ;


"""
代码解析

方法二:

total = 0
i = 1
sign = True
while sign:    
    total += i # total = total + i
    i+=1

    # 手动加上终止循环的条件
    if i == 101 :
        sign = False
print(total)

 六、单项循环的练习

1.打印一行十个小星星 help函数查看帮助文档

# (1).初始化变量
i = 0
# (2).循环判断的条件
while i <10:
    # (4).写上自己的代码逻辑
    print("*",end="") # 打印小星星
    # (3).自增加1
    i+=1
View Code

2.通过打印变量实现一行十个小星星

# 字符串的拼接
var1 = "我爱你,"
var2 = "这个世界上所有的女生" 
res = var1 + var2
print(res)
var1 += var2 # var1 = var1 + var2
print(var1)

# 循环10次,拼接了10个星星
i = 0
strvar = ""
while i < 10:
    strvar += "*" #strvar = '' + "*" / '*' + '*' / "**" + '*' / "***" + "*" / "*********" + "*"
    i+=1

print(strvar)
View Code

3.打印一行十个小星星,奇数个为★ , 偶数个位☆ 

"""
任意数和n取余,范围是多少? 0 ~ (n-1)
n = 2
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0 
3 % 2 = 1
4 % 2 = 0
5 % 2 = 1
0~1

n = 5
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
0~4
扑克牌 4种花色 方片 草花 红桃 黑桃
"""

i = 0
while i<10:
    # 写上代码的逻辑
    if i % 2 == 0:
        print("",end="")
    else:
        print("",end="")
    i+=1
View Code

4.一个循环打印十行十列的小星星

"""
0123456789
**********              0~9
10111213141516171819
* * * * * * * * * *     10~19
**********   20~29
**********   30~39
**********   40~49
**********   50~59
**********   60~69
**********   70~79
**********   80~89
**********   90~99

怎么能找到 9 19 29 39 49 ... 99 这颗星星呢?
"""

i = 0
while i < 100:
    # 打印星星
    print("*",end="")
    
    # 打印换行
    if i % 10 == 9:
        print()
    i+=1
View Code

5.一个循环打印十行十列隔列换色的小星星

"""
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
"""
i = 0
while i < 100:
    # 打印星星
    # print("*",end="")
    if i % 2 == 0:
        print("",end="")
    else:
        print("",end="")
    
    
    # 打印换行
    if i % 10 == 9:
        print()
    i+=1
View Code

6.一个循环打印十行十列隔行换色的小星星

"""
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
"""

"""
任意数和n进行地板除,会出现n个相同的数字
0 // 2 = 0
1 // 2 = 0
2 // 2 = 1
3 // 2 = 1
4 // 2 = 2
5 // 2 = 2

0 // 6 = 0
1 // 6 = 0
2 // 6 = 0
3 // 6 = 0
4 // 6 = 0
5 // 6 = 0

6  // 6  = 1
7  // 6  = 1
8  // 6  = 1
9  // 6  = 1
10 // 6  = 1
11 // 6  = 1

12 // 6  = 2
....

0 ~ 9   // 10 会出现10个相同的0
10~19   // 10 会出现10个相同的1
20~29   // 10 会出现10个相同的2
...

90~99   // 10 会出现10个相同的9

到此, 地板除的值  范围为: 0 ~ 9

"""
print("<======>")
i = 0
while i<100:

    # 打印星星
    if i // 10 % 2 == 0:
        print("",end="")
    else:
        print("",end="")
    
    # 打印换行
    if i % 10 == 9:
        print()

    i+=1
View Code

 

七、练习

"""
1.提⽰⽤户输入马化腾. 判断⽤户输入的对不对. 如果对, 提⽰真聪明, 如果不对, 提醒该充值了

2.根据身高(height)找对象
男生在1米 ~ 1.5米之间 =>打印小强 你在哪里?
男生在1.5 ~ 1.7米之间 =>打印没有安全感~
男生 1.7 ~ 1.8米之间 =>打印帅哥 留个电话
男生 1.8 ~ 2米之间 =>打印帅哥 你建议多一个女朋友吗

3.猜大小的游戏:
设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。

4.输出 1-100 内的所有奇数
5.输出 1-100 内的所有偶数
6.⽤户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)
"""
'''
name = input("谁是中国人民当中最能抄的?")

if name == "马化腾":
    print("真聪明")
else:
    print("不充值你怎么可能变得更强")
'''
1
'''
height = float(input("请输入您的升高:"))
# print(height, type(height))
'''
#  python 特有:
'''
if 1 <= height <= 1.5:
    print("小强在哪里")
elif 1.5 < height <= 1.7:
    print("没有安全感")
elif 1.7 < height <= 1.8 :
    print("打印帅哥 留个电话")
elif 1.8 < height <= 2:
    print("打印帅哥 你建议多一个女朋友吗")
'''
# 通用写法
'''
if 1 <= height and height <= 1.5:
    print("小强在哪里")
elif 1.5 < height and height <= 1.7:
    print("没有安全感")
elif 1.7 < height and height <= 1.8 :
    print("打印帅哥 留个电话")
elif 1.8 < height and height <= 2:
    print("打印帅哥 你建议多一个女朋友吗")
else:
    print("没有合适的选项")
'''
2
sign = True
while sign:
    num = float(input("请输入一个数字:"))
    if num == 66:
        print("猜对了")
        sign = False
    elif num > 66 :
        print("太大了")
    elif num < 66:
        print("太小了")
3
# 4.输出 1-100 内的所有奇数
i = 1
while i <= 100:
    if i % 2 == 1:
        print(i)
    i+=1
4
# 5.输出 1-100 内的所有偶数
i = 1
while i <= 100:
    if i % 2 == 0:
        print(i)
    i+=1
5
times = 1
sign = True
while sign:
    # 第一步: 输入密码
    pwd = input("请输入您的密码")
    
    # 判断输入的是不是111
    if pwd == "111":
        # 输入成功的情况1
        print("登录成功")
        # 终止循环
        sign = False
    else:
        # 输入失败的情况2
        # 剩余次数= 总次数 - 已用次数
        res = 3 - times
        print("输错了,你还剩余%d次" % (res) )
    
        # 如果次数减到0,意味着循环终止
        if res == 0:
            sign = False        
    
    # 自增加1
    times+=1
6

 

posted @ 2020-07-07 19:49  kongxiangqun20220317  阅读(154)  评论(0)    收藏  举报