python基础06 while循环、for循环、字符串内置方法、range关键字

练习

复制代码
# 猜年龄的游戏
# 1. 如果猜正确了,就直接结束程序
# 2. 猜错的话,继续让它猜,给三次机会,三次全猜错,程序不要结束,问:是否继续猜,是,在给三次机会,否则退出
'''先定义一个正确的值'''
age = 21
count = 0  # 计数器
while True:
    if count == 3:
        j = input('三次机会用完,按1继续,按2退出')
        if j == "1":
            count = 0
        else:
            print('再见')
            break
    gusse = input('猜猜我多大:')
    gusse = int(gusse)
    if gusse < age:
        print("猜小了,加油")
        count += 1
    elif gusse > age:
        print("猜大了,加油")
        count+=1
    else:
        print("猜对了,真棒")
        break
复制代码

 while+coutinue

复制代码
# 请听题:循环打印出0-10之间的数字
count=0
while count<10:
    print(count)
    count+=1
# 请听题:循环打印出0-9之间的数字,但是不打印6
count = 0
while count < 9:
if count == 6:
count += 1
continue
print(count)
count += 1
复制代码

while+else

复制代码
count = 0
while count < 9:
    if count == 6:
        count += 1
        break
    print(count)
    count += 1
else:
    print('sb')
#当while没有被人为(break)中断时,就会执行else代码块
复制代码

死循环

while True:
    print(123)
count = 0
while count < 9:
print(count)
上面两种都是死循环,编程中坚决不能出现死循环

 for循环

for循环所做的事,while都能做

for循环代码更加简洁,不会出现死循环

复制代码
# 请听题:
name_list = ['kevin', 'tank', 'jason', 'tony']
# 循环取出列表中每一个人名
count = 0
while count < 4:
    print(name_list[count])
    count += 1
for j in name_list:
print(j)
复制代码

语法格式:

for变量名in可迭代对象:可迭代对象就是循环对象,字符串、列表、字典、元组等

当你没有合适的变量名是,可以使用i、j、k、item等

# 循环打印字段的k和v
d = {'username': 'kevin', 'age': 18}
for i in d:
    print(i, d[i])

 range关键字

三种玩法:

复制代码
1.
for
i in range(10):#range只有一个整数时,表示从0——10之间的数 print(i)
2.
for i in range(2,10):#当有两个参数时,表示从2——10之间的数
print(i)
3.
for i in range(2,10,2):#当里面有三个参数时,表示2、4、6、8,第三个参数代表步长
print(i)
# 请看案例:
"""
https://movie.douban.com/top250?start=0&filter= 第一页的数据
https://movie.douban.com/top250?start=25&filter= 第二页的数据
https://movie.douban.com/top250?start=50&filter= 第三页的数据
https://movie.douban.com/top250?start=75&filter= 第三页的数据
https://movie.douban.com/top250?start=100&filter= 第三页的数据
https://movie.douban.com/top250?start=125&filter= 第三页的数据
...
s=https://movie.douban.com/top250?start=%s&filter
https://movie.douban.com/top250?start=225&filter= 最后一页的数据"""
s='https://movie.douban.com/top250?start=%s&filter'
for i in range(0,250,25):
print(s%i)
复制代码
复制代码
# 编写一个程序,查找所有此类数字,它们可以被7整除,但不能是5的倍数(在2000和3200之间(均包括在内))。获得的数字应以逗号分隔的顺序打印在一行上。
# 定义一个空列表接受数据
l = []
for i in range(2000, 3201):
    if i % 7 == 0 and i % 5 != 0:
        l.append(str(i))
print(','.join(l) + '\n', len(l))

# 使用给定的整数n,编写程序以生成包含(i,ixi)的字典,该字典为1到n之间的整数(都包括在内)。然后程序应打印字典。假设向程序提供了以下输入:8\
# 然后,输出应为:
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}
m = input('请输入你的数字:')
# 定义一个空字典
d = {}
for i in range(1, int(m) + 1):
    d[i] = i * i
print(d)

n = int(input())
ans = {i: i * i for i in range(1, n + 1)}
print(ans)
复制代码

range在不同版本解释器中的区别
在python2中直接打印出结果

在python3中做了优化,把它变成了迭代器, 就是节省内存资源

for+break

d = [1, 2, 3, 4]
for i in d:
    if i == 3:
        break
    print(i)

for+continue

d = [1, 2, 3, 4]
for i in d:
    if i == 3:
        continue#跳出本次循环,直接取下一位  
    print(i)#1、2、4

for+else

d = [1, 2, 3, 4]
for i in d:
    if i == 3:
        break
    print(i)
else:
    print('heihei')#当不被人为打断时,执行else代码块

打印九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print('%s*%s=%s' % (i, j, i * j), end=' ')
        print()

数据类型内置方法

什么内置方法

就是给每种数据类型内置的方法

它的表现形式:名字()int() print()

1.整型(int)

进制转换

常见的进制数:二进制、八进制、十进制、十六进制(a b c d e f)

十进制转二进制:除2取余法

# int它也支持二进制转换

print(bin(10))   # 0b 1010  0b代表的就是二进制
print(oct(10))   # 0o 12    0o代表的是八进制
print(hex(10))   # 0x a     0x代表的是十六进制
# 把二进制转为十进制
print(int('0b1010', 2))
print(int('0o12', 8))
print(int('0xa', 16))#第二个参数代表进制数

2.浮点型

# 1.3 float同样可以用来做数据类型的转换
s = '12.3'
res = float(s)
res, type(res)  # (12.3, <class 'float'>)

3.字符串

复制代码
s = 12.3
s = str(12.3)
print(type(s))  # <class 'str'>
print(str(s), type(str(s)))
print(str(1.11), type(str(1.11)))
print(str('helloworld'), type(str('helloworld')))
# print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
print(str({'a': 1, 'b': 2}), type(str({'a': 1, 'b': 2})))
print(str((1, 2, 3)), type(str({'a': 1, 'b': 2})))
print(str(({1, 2, 3})), type(str({'a': 1, 'b': 2})))
复制代码

字符串的内置方法

l = [1, 2, 3, 4]
res1 = str(l)
'helloworld'
print(res1[0])
print(res1[2])

字符串支持索引取值

复制代码
res = 'helloworldhelloworldhelloworldhelloworldhelloworldadadasdasdsadhelloworldhelloworldhelloworld'
print(res[0])
print(res[-2])  # (-)代表方向
# 切片
print(res[0:3])  # 表示从到到右取三位,参数0:表示从第几位开始,参数3:表示取几位
print(res[0:9:2])  # 参数2:表示步长
# 反向切片
print(res[0:])  # helloworld
print(res[2:])  # lloworld  冒号右边不写,一直切到结束
print(res[:6])  # hellow 冒号左边不写从0开始切
print(res[::3])  # hellow 冒号左边不写从0开始切
print(res[::-1])  # dlrowolleh,翻转字符串其中一种方式
# 长度len
print(len(res))  # 93  length---->len
print(len([1, 2, 3, 4]))
print(len({'a': 1, 'b': 2}))
# 5.strip移除字符串首尾指定的字符(默认移除空格)
res1 = '@@hello@world@@'
print(res1.strip())  # 默认什么都不写,去掉的是空格
print(res1.lstrip())  # 默认什么都不写,去掉左边空格
print(res1.rstrip())  # 默认什么都不写,去掉右边的空格
print(res1.rstrip('@'))  # 只能去除两边的特殊符号,中间的去不掉
# 6.切分split
res12 = 'kevin|18|male'
print(res12.split())  # 默认是空格切分,切分之后是列表的形式
print(res12.split('|'))  # 默认是空格切分,切分之后是列表的形式
print(res12.rsplit('|', maxsplit=1))  # 默认是空格切分,切分之后是列表的形式
复制代码

 

posted @   Py玩家  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示