Java教程

7. for循环、数据类型内置方法

本文主要是介绍7. for循环、数据类型内置方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、 while循环补充

1. while+else

当while没有被关键字break主动结束的情况下,正常结束循环体代码之后会执行else的子代码

"""
语法

while 条件:
    循环体代码
else:
    循环体代码正常运行结束,则会执行该子代码块
"""
count = 1
while count < 11:
    print(count)
    count += 1
else:
    print('循环全部执行完毕')  # while循环在条件不满足时结束,此行代码会被运行
#  当while循环执行过程中被break中止时,就不会执行else的子代码块
count = 1
while count < 11:
    if count == 4:
        break  # 当count的值为4时,while循环结束
    print(count)
    count += 1
else:
    print('while循环没有被中止正常结束')  # 此行代码不会被执行

2. 死循环与while嵌套

死循环有些时候会极度影响电脑的性能,甚至会造成硬件的损坏

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

# 尤其是计算类的死循环会影响计算机的cpu
count = 10
while True:
    count *= 1
# while嵌套(可使用全局标志位进行嵌套)
flag = True  # 1.定义初始状态,布尔值为真
while flag:  # 2.根据条件判断结果决定是否执行循环;;首次结果为True;;
    name = input('请输入用户名:')
    passwd = input('请输入密码:')
    if name == '梅西' and passwd == '30':
        print('登录成功')
        while flag:  # 3.登录成功后;;条件为真,让用户一直输入指令
            cmd = input('请输入指令:')
            if cmd == 'q':  # 4.如果输入的指令是q,则给flag赋值为False;;下次的内层while循环条件为False;;然后if判断的代码块也执行完毕,将进行下次外层while循环,条件也为False,结束
                print('退游')
                flag = False
            print('正在执行您的指令:%s' % cmd)
    else:
        print('用户名或密码错误')

二、 for循环

1. 概念与语法

循环结构的第二种方式是for循环,for循环可以做的事情while循环都可以实现

在循环取值(遍历值)的时候,for循环比while循环更简洁

for 变量名 in 可迭代对象:
    循环体代码

可迭代对象包括:字符串、列表、元组、字典、集合
每一次循环都会将可迭代对象中的一个元素赋值给变量名

2. for循环遍历基本数据类型

# 使用for循环遍历字符串
for a in '阿根廷 足球巨星梅西':
    print(a)  # 注意:空格也是字符串,也会被打印

# 使用for循环遍历列表
player = ['梅西', 'C罗', '贝尔', '莱万', '卡瓦尼']
for name in player:
    print(name)

# 使用for循环遍历元组
for b in (11, 22, 33, 44, 55):
    print(b)

# 使用for循环遍历字典:遍历字典只能获取到到字典的key,value无法直接获取
info = {'name': '梅西', 'age': 35, 'club': 'psg'}
for c in info:
    print(c)  # 打印的值为字典的key
    print(info[c])  # 可以通过的方式打印字典的value

# 使用for循环遍历集合
for d in {111, 111, 222, 333, 444}:
    print(d)  # 打印的结果无序,因为集合的特点是无序的;;只打印四个值,因为集合没有重复元素

 3. range函数

概念:range是python的一个内置函数,用于生成一系列连续的整数

range方法在python2和python3中有区别:

    python2中range是直接产生一个列表,元素很多的情况下比较占用空间

   

 

    python2中的xrange就相当于python3中的range

    

     python中range相当于口袋,不占空间但是也可以取出很多数据(python3中只有一个range)

     

range用法
# 用法1:括号内只写一个数字,默认从0开始,顾头不顾尾
for a in range(10):
    print(a)  # 依次打印0~9

# 用法2:括号内写两个数字,自定义起始位置,顾头不顾尾
for b in range(5, 10):
    print(b)  # 依次打印5~9

# 用法3:括号内写三个数字,第三个数字为等差数列的公差,默认为1
for c in range(1, 10, 2):
    print(c)  # 依次打印1 3 5 7 9
range在爬虫方面的应用
url_demo = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):  # 生成0~250的10个数,公差为25,因为网址每下一页比上一页指定位置的值大25
    real_url = url_demo % i  # 给链接字符串的占位符传入值,生成可用的链接
    print(real_url)

4. for循环应用

4.1 for + break

 结束本层for循环,与while + break用法一致

for a in range(10):
    if a == 4:  # 当a的值为4时,for循环被break结束,因此只会打印0 1 2 3
        break
    print(a)

4.2 for + continue

结束本次for循环,开始下一次for循环;;与while + continue用法一致

for b in range(6):
    if b == 4:  # 当a的值为4时,结束本次循环,直接开始下一次循环;;因此打印0 1 2 3 5
        continue
    print(b)

4.3 for + else

for循环正常结束之后运行else子代码;;与while + else用法一致

for c in range(3):
    print(c)
else:
    print('只有当for循环没有被break打断才会执行')

5. for循环的应用之九九乘法表

for i in range(1, 10):  # 每进行一次外层for循环,从1~9之间取出一个值,这个值作为乘号左边的数
    for j in range(1, i + 1):  # 一次外层for循环已经拿到乘号左边的数,因为乘法表每一行所在的行数与该行乘式的个数、以及乘号左边的数值相等;;所以一个完整内层for循环最大值为i,即range(1,i+1)
        print('%s*%s=%s' % (i, j, i * j), end=' ')  # 一次外层for循环的i值是固定的,j的值从1开始取,最大值为i,一行多个乘式不换行(空格打印)
    print()  # 每进行一次完整的外层for循环,即打印完成乘法表的一行,应该换行打印

三、 基本数据类型的内置方法

1. 整型

类型转换
print(int('111'), type(int('111')))  # 可以将只包含整数的字符串转换成整型
print(int('11.22'), type(int('11.22')))  # 报错,含有浮点型的字符串不能被int函数转换
print(int('abc'), type(int('abc')))  # 报错,字符串不能被int函数转换

print(int(222.333), type(int(222.333)))  # 浮点型可以被转换成整型
进制转换

# 将十进制转换成其它进制
print(bin(100))  # 0b1100100  二进制 (0b开头)   bin是binary的缩写
print(oct(100))  # 0o144      八进制 (0o开头)   oct是octal的缩写
print(hex(100))  # 0x64       十六进制(0x开头)   hex是hexadecima的缩写

# 其它进制转换成十进制
print(int('0b1100100', 2))  # 这两行代码都是将二进制转换成十进制
print(int(0b1100100))

print(int('0o144', 8))  # 将八进制转换成十进制
print(int(0o144))

print(int('0x64', 16))  # 将十六进制转换成十进制
print(int(0x64))

2. 浮点型

类型转换
print(float('111.222'), type(float('111.222')))  # 将只包含浮点型的字符串转换成浮点型
print(float(333), type(float(333)))  # 将整型转换成浮点型

3. 字符串

类型转换:七大数据类型都可以转换成字符串

# 整型转换成字符串
print(str(11), type(str(11)))
# 浮点型转换成字符串
print(str(222.333), type(str(222.333)))
# 列表转换成字符串
print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
# 字典转换成字符串
print(str({'name': '梅西'}), type(str({'name': '梅西'})))
# 元组转换成字符串
print(str((555, 666, 777, 888)), type(str((555, 666, 777, 888))))
# 集合转换成字符串
print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
# 布尔值转换成字符串
print(str(True), type(str(True)))
# 内置方法
s1 = 'hello world'
# 1.索引取值
print(s1[0])  # 类比于列表的索引取值
# 2.切片操作
print(s1[2:4]) # 类比于range()函数,顾头不顾尾
# 3.切片的步长
print(s1[2:9:2])  # lowr 第三个值是公差,默认是1,类比于range函数的用法

print(s1[-1])  # 反向取;;取最后一个值
print(s1[-1:-5:-1])  # dlro  第3个参数还可以控制索引的方向;因为取值的顺序都是从左往右,所以-1的右边已经没有值了
print(s1[-5:-1])  # worl
# 4.统计字符串中字符的个数
print(len(s1))  # 11
# 5.成员运算
print('ll' in s1)  # 即成员运算符
# 6.移除字符串首尾指定的字符(使用频率较高)
name = '  梅西  '
print(len(name))
res = name.strip()  # 默认移除字符串首尾的空格
print(res, len(res))

name1 = '$$$$梅$西$$$$'  # 可移除首尾指定的字符,不能移除中间的字符
print(name1.strip('$'))
# username = input('username>>>>:').strip()
# if username == '梅西':
#     print('阿根廷球王')

# 7.按照指定的字符切割字符串
"""split方法切割完字符串之后是一个列表"""
info = '梅西|10|PSG|30'
print(info.split('|'))  # ['梅西', '10', 'PSG', '30']
print(info.split('|', maxsplit=2))  # ['梅西', '10', 'PSG|30'] 第二个参数控制切割的次数;;默认从左开始切
print(info.rsplit('|', maxsplit=1))  # ['梅西|10|PSG', '30'] rspilt的作用是从右开始切

 

这篇关于7. for循环、数据类型内置方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!