码农学技术————六个月学习python全栈【Day06】

本文详细介绍了Python中的while循环和for循环的使用,包括while循环的else子句、死循环与嵌套,以及for循环的range关键字。此外,还讲解了基本数据类型如整型、浮点型和字符串的转换、操作和方法。文中提供了多个示例来帮助理解,并给出了一个用户登录程序的实现,涵盖了输入处理和错误处理。
摘要由CSDN通过智能技术生成

今日学习目标:

  • 理解运用while循环剩余用法
  • 理解运用for循环用法
  • 理解运用for循环中特殊关键词用法
  • 理解运用基本数据类型及内置方法

今日学习内容:

内容简要:

  • 流程控制——循环结构(while循环2.0)
  • 流程控制——循环结构(for循环)
  • 流程控制——循环结构(for循环——关键字)
  • 基本数据类型及内置方法(方法有点多 前期需要记忆)

内容详细:

流程控制——循环结构(while循环2.0)

一. while与else连用

  • npython中的while后面的else的作用是指,当while循环正常执行,中间没有break的时候,会执else后面的语句。
  • 但是如果while语句中有brerak,那么就不会执行else后面的内容了。

语法结构

   """
   while 条件:
   	循环体代码
   else:
   	循环体代码正常运行结束 则会执行该子代码块
   """
  • 加入break

    代码显示

    count = 1
    while count < 5:
    	if count == 4:
        	break
    	print(count)
    	count += 1
    else:
    	print('while循环寿终正寝了!!!')
    

    运行结果
    在这里插入图片描述

  • 不加入break
    代码显示

    count = 1
    while count < 5:
    	print(count)
    	count += 1
    else:
    	print('while循环寿终正寝了!!!')
    

    运行结果
    在这里插入图片描述


二. 死循环与while的嵌套

  • 1.死循环
    什么是死循环?
    在编程中,一个无法靠自身的控制终止的循环被称为死循环
  • 1、在Python中while循环的执行条件为:While关键字后的条件语句为True因此当条件为"while True或while 1"时,如果没有特殊处理,那么就会一直执行执行while循环,这种就被称为死循环(不会出现条件为False的情况,无法跳出循环)
  • 2、因为死循环无法终止,会一直运行下去,所以我们要尽量避免出现死循环
  • 3、当然,我们也可以使用break或continue关键字来终止某一循环

代码演示


	n = 0
	while True: 
    	if n == 5:
        	break  #使用break来跳出死循环
    	print(n)
    	n += 1
	print("循环结束")
 
	"""
	当循环是一个死循环时,就必须使用break来指明跳出循环的条件,不然程序会一直运行下去
	0
	1
	2
	3
	4
	循环结束
	"""

死循环就是永远无法结束的循环并且一致占用CPU工作


  • 2.while的嵌套

语法结构

while 条件:
   while 条件:
      条件成立后执行的语句
条件成立后执行的语句

代码演示


row = 1
while row <= 9:
    col = 1
    while col <= row:
        print("%d*%d=%d\t" % (row, col, row*col), end = "")
        col += 1
    print() # 单纯的换行
    row += 1
 
"""
1*1=1    
2*1=2    2*2=4    
3*1=3    3*2=6    3*3=9    
4*1=4    4*2=8    4*3=12    4*4=16    
5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    
6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36    
7*1=7    7*2=14    7*3=21    7*4=28    7*5=35    7*6=42    7*7=49    
8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64    
9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81    
"""

1、循环嵌套结构的代码,Python解释器执行的流程为:

  • ⑴当外层循环条件为True时,则执行外层循环(属于外循环的语句)
  • ⑵外层循环体中包含了普通程序和内循环,当内层循环的循环条件为True时则执行内循环,直到内层循环条件为False,跳出内循环
  • ⑶如果此时外层循环的条件仍为True,则返回第2步,继续执行外层循环体,直到外层循环的循环条件为False
  • ⑷当内层循环的循环条件为 False,且外层循环的循环条件也为 False,则整个嵌套循环才算执行完毕

2、即:外部循环满足条件后,开始执行属于外循环的内部循环,等内部循环全部执行完毕,如果还满足外部循环条件,则外部循环再次执行,依次类推,直到跳出外层循环

3、python中的print打印函数默认自带换行,可以添加第二参数 end = " " 来阻止换行。end代表要打印字符串的最后最后一个字符,可以换成制表符或者其他的符号代替换行符而已


流程控制——循环结构(for循环)

for循环可以做到的事情while循环都可以做到,但是for循环语法更加简单 使用频率更高

一般情况下涉及到循环取值的时候 都会考虑使用for循环而不是while循环

语法结构

"""
语法结构
	for 变量名 in for循环对象:  # 字符串、列表、字典、元组、集合
		for循环的循环体代码
	每次执行都会将循环对象中的一个元素赋值给变量名

ps:针对for循环语法结构中的变量名 也应该做到见名知意
	如果真的没有合适的名字可以使用常用的变量名i、j、k、v、num、item...
"""

代码演示

#for循环主要用来遍历、循环、序列、集合、字典
Fruits=['apple','orange','banana','grape']
for fruit in Fruits:
    print(fruit)
print("结束遍历")



"""
循环字典(特殊):循环字典只能获取到字典的key value无法直接获取
"""
 userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
 for i in userinfo_dict:
     print(i)

"""
运行结果:
username
age
gender
"""

运行结果
在这里插入图片描述

for循环的嵌套类似while嵌套一样


流程控制——循环结构(for循环——关键字)

range关键字

range方法在python2和python3中有所区分

  • 在python2中range是直接产生一个列表 元素很多的情况下比较占用空间
  • 在python2中有一个xrange 其实就是python3里面的range
  • 在python3中range相当于哆啦A梦的口袋 不占空间但是可以取出很多数据
  • 在python3中就只有一个range了

用法举例

# 循环打印0-100
# while循环
 count = 0
 while count < 101:
     print(count)
     count += 1
# for循环
 for i in range(101):  # 从0开始到100结束的数据集 顾头不顾尾
     print(i)
"""range其实一个迭代器(后面讲) 用于产生一个数据集合 但是节省空间"""
用法举例
括号内只写一个数字 默认从0开始 顾头不顾尾图一
括号内写两个数字 自定义起始位置 顾头不顾尾图二
括号内写三个数字 第三个数字表示的是等差数列的差值 默认情况下是1图三

图一:
在这里插入图片描述
图二:
在这里插入图片描述

图三:
在这里插入图片描述

补充

for+break

break结束本层for循环

for+continue

continue结束本次for循环 直接开始下一次

for+else

for循环正常结束之后运行else子代码

以上用法与while一致


基本数据类型及内置方法(方法有点多 前期需要记忆)

int整型

  • 1.类型转换

    用法举例

    res = int('123')  # 将int方法执行之后的结果赋值给变量res
    print(res, type(res))  # int
    

int方法只能转换纯数字的字符串

  • 2.进制数转换
    用法举例
    # 将十进制转换成其他机制
    print(bin(100))  # 0b1100100    二进制(0b开头)
    print(oct(100))  # 0o144        八进制(0o开头)
    print(hex(100))  # 0x64         十六机制(0x开头)
    将其他机制转换成十进制
    

float浮点型

  • 类型转换
    用法举例

    	res = float('11.11')
    	print(res, type(res))  # 11.11
    	res = float('11')
    	print(res, type(res))  # 11.0
    

str字符串

  • 1.类型转换

    用法举例

    	str可以转换所有基本数据类型
    		print(str(11), type(str(11)))  # 11 <class 'str'>
        	print(str(11.11), type(str(11.11)))  # 11.11 <class 'str'>
        	print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))  # [1, 2, 3, 4] <class 'str'>
        	print(str({'name': 'jason'}), type(str({'name': 'jason'})))  # {'name': 'jason'} <class 'str'>
        	print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))  # (1, 2, 3, 4) <class 'str'>
        	print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))  # {1, 2, 3, 4} <class 'str'>
        	print(str(True), type(str(True)))  # True <class 'str'>
    
  • 2.索引取值

    用法举例

    s1 = 'hello world'
    print(s1[0])  # h
    
  • 3.切片操作

    用法举例

    # 3.1 顾头不顾尾:取出索引为0到8的所有字符
    >>> str1[0:9]  
    hello pyt
    # 3.2 步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2、4、6、8的字符
    >>> str1[0:9:2]  
    hlopt 
    # 3.3 反向切片
    >>> str1[::-1]  # -1表示从右往左依次取值
    !nohtyp olleh
    
  • 4.长度len

    用法举例

    # 4.1 获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符)
    >>> len(str1) # 空格也算字符
    13
    
  • 索引取切片扩展
    用法举例

    print(s1[-1])  # 获取最好一个字符
    print(s1[-1:-5:-1])  # dlro  第三个参数还可以控制索引的方向
    print(s1[-5:-1])  # worl
    
  • 5.循环

    用法举例

    >>> str5 = '今天你好吗?'
    >>> for line in str5:  # 依次取出字符串中每一个字符
    ...     print(line)
    ...
    今
    天
    你
    好
    吗
    ?
    
  • 6.成员运算

    用法举例

    # 6.1 int:判断hello 是否在 str1里面
    >>> 'hello' in str1  
    True
    # 6.2 not in:判断tony 是否不在 str1里面
    >>> 'tony' not in str1 
    True
    
  • 7.移除字符串首位指定的字符(使用频率较高)

    用法举例

    # 7.1 括号内不指定字符,默认移除首尾空格
    >>> str1 = '  life is short!  '
    >>> str1.strip()  
    life is short!
    
    # 7.2 括号内指定字符,移除首尾指定的字符
    >>> str2 = '**tony**'  
    >>> str2.strip('*')  
    tony
    
  • 8.按照指定的字符切割字符串

    用法举例

    # 8.1 括号内不指定字符,默认以空格作为切分符号
    >>> str3='hello world'
    >>> str3.split()
    ['hello', 'world']
    # 8.2 括号内指定分隔字符,则按照括号内指定的字符切割字符串
    >>> str4 = '127.0.0.1'
    >>> str4.split('.')  
    ['127', '0', '0', '1']  # 注意:split切割得到的结果是列表数据类型
    
    

今日学习时间:

这里统计计划学习的时间

1、 上午8:30~12:30
2、 下午2:30~5:30
3、 晚上6:30~9:30


今日学习产出:

这里统计学习计划的总量

  • 1、 技术笔记 1遍
  • 2、CSDN 技术博客 1篇
  • 3、每日录音
  • 4、课后作业
    1.编写一个用户登录程序
    要求最多尝试失误三次 过期自动提示并可重置尝试次数
    用户登录成功之后进入内部循环 用户输入什么就打印什么 并给用户提供一个结束程序的特殊指令
    获取用户输入的用户名和密码可以处理首尾空格
    用户的用户名和密码使用变量存储 通过程序获取用户名和密码比对
    data = ‘jason|123’
is_tag = True
count = 1
data = 'jason|123'
while is_tag:
    username = input('请输入您的用户名:').strip()
    password = input('请输入您的密码:').strip()
    Reality_username, Reality_password = data.split('|')
    if username == Reality_username and password == Reality_password:
        print('登录成功')
        while is_tag:
            cmd = input('输入您的指令:').strip()
            print('正在执行您输入的命令(%s)....' % cmd)
            if cmd == 'byb':
                print('下次再见!')
                is_tag = False
    else:
        print('用户名或密码错误!')
        count += 1

    if count == 4:
        ask = input('您已经尝试了三次 是否继续(y/n):')
        if ask == 'y':
            count = 1
        else:
            is_tag = False
            print('拜拜了您嘞!!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值