python_d02

这篇博客详细介绍了Python中的循环结构,特别是while循环,并深入探讨了Python中的数据类型,包括可变和不可变类型的区别,如数字、字符串、列表、元组和字典的特性与用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 while 循环

# 1死循环,会造成CPU的占用率过高
# i=1
# while True:
#     i+=1

#2打印1-10
# n=1
# while True:
#     if n <= 10:
#         print(n)
#         n+=1
#     else:
#         break

# 3打印1-10,改进1
# n=1
# while True:
#     if n>10:
#         break
#     print(n)
#     n+=1

#4打印1-10,改进2
# n=1
# while n<= 10:
#     print(n)
#     n+=1



# while True:
#     name=input('please input your name :')
#     pwd=input('please input your password:')
#     if name == 'm' and pwd == '123':
#         print('登陆成功')
#     else:
#         print('用户名或密码错误')

# 4、while+break:break的意思是结束本层循环
# while True:
#     name=input('please input your name :')
#     pwd=input('please input your password:')
#     if name == 'm' and pwd == '123':
#         print('登陆成功')
#         break
#     else:
#         print('用户名或密码错误')


#5 while+continue:continue的意思是结束本次循环,进入下一次循环
# n=1
# while n <= 5:
#     if n == 4:
#         n+=1
#         continue
#     print(n)
#     n+=1

# 6、练习题:循环嵌套

n=0
tag=True
while tag:
    if n == 3:
        print('失败尝试的次数过多')
        break
    name=input('please input your name:')
    pwd=input('please input your password:')
    if name == 'm' and pwd == '123':
        print('登陆成功')
        while tag:
            cmd=input('请输入你的命令:')
            if not cmd:continue
            if cmd == 'q':
                tag=False
                break
            print('%s is running' %cmd)
    else:
        print('用户名或密码错误')
        n+=1

03可变or不可变类型

# 可变:值改变,但是id不变
# 不可变:值改变,id也变.(没改变原来值,产生了新值)

x=10
print(id(x))
x=11
print(id(x))

l=['a', 'b', 'c']
print(id(l))

l[0]='A'
print(l)
print(id(l))

04 数字类型

#一、int基本使用
#1 int用途:年龄,等级,编号

# 2、定义方式
# age=18
# print(age,type(age),id(age))

# 3、常用操作+内置方法
# 比较大小
# 数学运算

age=input('>>:')
age=int(age)
if age > 10:
    print('too big')

05 字符串类型

# 一、str基本使用
# 1、描述性的数据:姓名、性别、地址等

# 2 定义方式:在单引号、双引号、三引号内,包含一串字符
# name='m'
# print(name,type(name),id(name))


# 3、优先掌握的操作:
# 3.1、按索引取值(正向取+反向取):只能取
# msg='he lo'
# print(msg[0])
# print(msg[2])
# msg[2]='A'    #字符串只能取不能替换

# 3.2切片(顾头不顾尾,步长)
# msg = 'hello world'
# print(msg[0:4])   #hell
# print(msg[0:4:2]) #hl


# 3.3长度len
# msg='hello'
# print(len(msg))

# 3.4成员运算in和not in
# msg = 'alex say my name is alex'
# if 'alex' in msg:
#     print('exist')
#
# print('alex' not in msg)
# print('alex' in msg)

# 3.5只能移除字符串左右两边的字符strip
# name = '     X               mmm      '
# print(name)
# name=name.strip()
# print(name)

# msg='**********b*****belly is nice********'
# print(msg.strip('*'))  #b*****belly is nice
# msg='*****/ ***** belly is nice*****//        **'
# print(msg.strip('* /'))  #belly is nice

# while True:
#     cmd=input('cmd>>:').strip()
#     if len(cmd) == 0:continue
#     if cmd == 'q':break
#     print('%s is running ' %cmd)



# 3.6 split
# info='$PATH:$HOME/.local/bin:$HOME/bin'
# res=info.split(':')
# print(res)  #['$PATH', '$HOME/.local/bin', '$HOME/bin']
# print(res[1])   #$HOME/.local/bin


# inp='get a.txt'
# cmd=inp[0:3]
# filepath=inp[4:]
# print(cmd)  #get
# print(filepath)  #a.txt
# res=inp.split(' ')
# print(res)  #['get', 'a.txt']



# 3.7循环取值
# msg='xyz'
# n=0
# while n < len(msg):
#     print(msg[n])
#     n+=1

# 需要掌握的操作
# 1、strip,lstrip,rstrip
# print('***********m********'.lstrip('*'))  #m********
# print('***********m********'.rstrip('*'))  #***********m

# 2、lower,upper
# msg='Abc'
# print(msg.lower()) #abc
# print(msg.upper())  #ABC


# 3、startswith,endswith
# msg='alex is nice'
# print(msg.startswith('x'))  #False
# print(msg.startswith('alex')) #True
# print(msg.endswith('ce'))  #True

# 4、format的三种玩法
# print('my name is %s . my age is %s ' %('m', 18))
# print('my name is {name}. my age is {age}'.format(age=18, name='m'))
# print('my name is {}. my age is {}'.format('m', 18))
# print('my name is {0}. my age is {1} {1} {1} {1}'.format('m', 18))


# 5、split,rsplit
# info='$PATH:$HOME/.local/bin:$HOME/bin'
# print(info.split(':',1))  #['$PATH', '$HOME/.local/bin:$HOME/bin']
# print(info.split(':',2))   #['$PATH', '$HOME/.local/bin', '$HOME/bin']
# print(info.rsplit(':',1))  #['$PATH:$HOME/.local/bin', '$HOME/bin']

#6、join
# info='$PATH:$HOME/.local/bin:$HOME/bin'
# str_to_list=info.split(':')
# print(str_to_list)   #['$PATH', '$HOME/.local/bin', '$HOME/bin']
# l=['$PATH', '$HOME/.local/bin', '$HOME/bin']
# list_to_str=':'.join(l)
# print(list_to_str,type(list_to_str))    #$PATH:$HOME/.local/bin:$HOME/bin <class 'str'>


# 注意:join只能连接所包含的元素全部为字符串类型的列表
# l=['a',2,3]
# ':'.join(l)     #报错!!

# 7、replace
# msg='Alex say my name is Alex'
# print(msg.replace('Alex', 'Abby',1))

# 8、isdigit
# print('asdf32131'.isdigit())

# AGE=30
# while True:
#     age=input('>>:').strip()
#     if not age.isdigit():continue
#     age=int(age)
#     if age > 30:
#         print('too big')
#     elif age < 30:
#         print('to small')
#     else:
#         print('you got it')
#         break

# print(r'a\tb')  #a\tb   r开头的字符串内都是原声字符串,右斜杠没有特殊意义
# print('a\tb')

# 其他操作(了解)
# 1、find,rfind,index,rindex,count
# msg='hello alex hhaha alex'
# print(msg.find('alex',0,3))  #在0-3中找Alex在大字符串msg中的起始索引,没有找到则返回-1
# print(msg.index('alex'))   #找的是Alex在大字符串msg中的起始索引,没有找到则报错
# print(msg.count('alex'))  #alex在大字符串中出现的次数

06 列表类型

# 一、list的基本使用
# 1、用途:存放多个值
# 2、定义方式:[]内用逗号分隔开多个元素,每个元素可以是任意数据类型
# l=[1,'a',[1,2]]
# print(type(l),l)
# l=list([1,'a',[1,2]])
# print(type(l),l)
# 3、常用操作+内置方法
# 优先掌握的操作
# 3.1按索引存取值(正向存取+反向存取):即可以去也可以改
# names=['m','alex','wxx','xxx','zzz']
# print(names[4])  #zzz
# print(names[-1]) #zzz
# print(names[-2])  #xxx
# print(id(names))
# names[0]='M'
# print(id(names))
# print(names)
# names[5]=3

# 3.2切片(顾头不顾尾,步长)
# names=['m','alex','wxx','xxx','zzz']
# print(names[0:3:2])  #['m','wxx']
# print(names[:])
# 了解:反向步长
# print(names[3:-1:-1]) #[]
# print(names[-1::-1])  #['zzz','xxx','wxx','alex','m']

# 3.3长度
# names=['m','alex','wxx','xxx','zzz']
# print(len(names))

# 3.4成员运算in和not in
# names=['m','alex','wxx','xxx','zzz']
# print('alex' in names)
# print(4 in names)

# 3.5追加与插入
# names=['m','alex','wxx','xxx','zzz']
# names.append('1')
# names.append('2')
# names.append('3')
# print(names)

# names.insert(2, 'min')
# print(names)

# 3.6删除列表中某一个元素
# names=['m','alex','wxx','xxx','zzz']
# del names[2]
# print(names)  #['m','alex','xxx','zzz']

# res=names.remove('wxx') #指定要删除的元素,remove方法没有返回值
# print(res)  #None    无返回值
# print(names)

# 从列表中取走一个元素
# res=names.pop(0)
# print(res)   #m
# print(names) #['alex', 'wxx', 'xxx', 'zzz']  按照索引删除的元素(会返回刚刚删掉的元素),超出索引限制则报错

# 3.7循环
# names=['m','alex','wxx','xxx','zzz']
# for x in names:
#     print(x)

# 需要掌握的操作
# names = ['m', 'm', 'alex', 'wxx', 'xxx', 'zzz', 1, 2, 3, 4]
# names.reverse()
# names.reverse()
# print(names)

# print(names.count('m'))  #2
# names.clear()
# print(names)

# l=names.copy()
# print(l)

# 找names中第一个匹配的项
# print(names.index('alex'))  #2

# 比较排序
# names=['b','a','+']
# names.sort()
# print(names)

# 了解:字符\|列表之间比较大小
# x='hello'

# l1=[1,2,'a','b] #列表比大小,一一对应的比,第一个出结果后无需再比

# 二、该类型总结
# 1、存多个值
# 2、有序
# 3、可变

# 练习题:
# 1、队列:先进先出
# l=[]
# 入队first->second->third
# l.append('first')
# l.append('second')
# l.append('third')
# print(l)
# 出队:
# print(l.pop(0))  #first
# print(l) #['second', 'third']
# print(l.pop(0)) #second
# print(l)   #['third']
# print(l.pop(0)) #third
# print(l)  #[]

# 2、堆栈:先进后出
# 入栈:first->second->third
# l.append('first')
# l.append('second')
# l.append('third')
# print(l)    #['first', 'second', 'third']
# 出栈:third->second->first
# print(l.pop(-1))   #third
# print(l)    #['first', 'second']
# print(l.pop())   #second ,默认为 index=-1,删除最后一个列表值。
# print(l)  #['first']
# print(l.pop())   #first
# print(l) #[]

07 元组类型

# 一、tuple基本使用
# 1、用途:不可变列表

# 2、定义方式
# t=(1,2,3)  #t=tuple((1,2,3))
# print(type(t))

# 3、常用操作+内置方法
# 优先掌握的操作:
# 3.1按索引取值(正向取+反向取):只能取
# t=('a', 'b', 'c')
# print(t[-1])   #c
# t[-1]=33333   #报错

# 3.2切片(顾头不顾尾,步长)
# t=('a','b','c','d','e')
# print(t[0:5:2])   #('a', 'c', 'e')

# 3.3长度
# 3.4成员运算in和not in

# 3.5 循环

# 需要掌握的方法
# t=('a','b','c','d','e','c')
# print(t.index('c'))  #2
# print(t.count('c'))  #2

# 二、该类型总结
# 1 存多个值
# 2 有序
# 3 不可变

08 字典类型

# 一:dict基本使用
# 1、用途:存多个值,key:value.key对value有描述作用
# 2、定义方式:{}内用逗号分开多个元素,每一个元素都是key:value形式
# 其中key必须是不可变类型,key通常都应该是字符串类型
# 其中value可以使任意数据类型

# info={'name':'m',(1,2):18}
# print(info['name'])  #m
# print(info[(1,2)])  #18

# 3、常用操作+内置方法
# 优先掌握的操作
# 3.1按key存取值:可存可取
# d={'x':1}
# print(id(d))
# d['x']=2
# print(id(d))
# print(d)

# d['y']=3
# print(d)

# 3.2长度len
# info={'x':1,'y':2,'z':3}
# print(len(info))  #3

# 3.3成员运算in和not in:判断的是字典的key
# info={'x':1,'y':2,'z':3}
# print('x' in info)    #True


# 3.4删除
# info = {'x': 1, 'y': 2, 'z': 3}
# print(info)
# del info['x']
# print(info)  #info={'y':2,'z':3}

# print(info.popitem()) #
# print(info)
# print(info.pop('xxxx', None))
# print(info)

# 3.5 键keys(),值values(),键值对items()
# msg_dic={
#     'apple':10,
#     'tesla':100000,
#     'mac':3000,
#     'lenovo':30000,
#     'chicken':10,
# }
# print(msg_dic.keys())
# print(msg_dic.values())
# print(msg_dic.items())

# 3.6循环

# msg_dic = {
#     'apple': 10,
#     'tesla': 100000,
#     'mac': 3000,
#     'lenovo': 30000,
#     'chicken': 10,
# }

# print(msg_dic.items())

# for k in msg_dic:
#     print(k, msg_dic[k])
    # apple 10
    # tesla 100000
    # mac 3000
    # lenovo 30000
    # chicken 10

# for k in msg_dic.keys():
#     print(k)
    # apple
    # tesla
    # mac
    # lenovo
    # chicken

# for v in msg_dic.values():
#     print(v)
    # 30000
    # 10
    # 3000
    # 100000
    # 10

# k,v=('apple', 10)
# for k,v in msg_dic.items():
#     print(k,v)

# 掌握的操作
# msg_dic = {
#     'apple': 10,
#     'tesla': 100000,
#     'mac': 3000,
#     'lenovo': 30000,
#     'chicken': 10,
# }

# if 'applexxx' in msg_dic:
#     print(msg_dic['applexxx'])
# print(msg_dic.get('apple111',123123123))

# msg_dic.update()
# d1={'x':1,'y':2}
# d1.update({'x':2,'z':3})
# print(d1)

# msg_dic.setdefault
# 1、key存在,则不改变key对应的值,放回原值
# d={'x':1,'y':2}
# res=d.setdefault('x',1000)
# print(d)
# print(res)  #1

# 2、key不存在,则增加一个key:value,返回新增的value
# d={'x':1,'y':2}
# res=d.setdefault('z',1000)
# print(d)  #{'x':1,'y':2,'z':3}
# print(res) #1000

# 总结:setdefault有则不变,无则增加

# s='hello alex alex is is saying hello !'
# words=s.split()
# print(words) #['hello', 'alex', 'alex', 'is', 'is', 'saying', 'hello', '!']
# d={}
# for word in words:
#     d.setdefault(word,words.count(word))
# print(d)


# 了解
# d={}.fromkeys(['name','age','sex'],None)
# print(d)

# 二、dict类型总结
# 1、存多个值
# 2、无序
# 3、可变

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值