python(二)
循环和数据类型
1.1 for循环
猜年龄:猜错三次,即强制退出
- #!/usr/bin/env python
- My_Age = 24
- for i in range(3):
- guess_age = int(input('age:'))
- if guess_age > My_Age:
- print("Please smaller")
- elif guess_age < My_Age:
- print("Please bigger")
- else:
- print("You are right!")
- break
- else: #此处else的作用是上述循环正常执行完毕才会运行下面的代码
- exit('You already try too many ci')
- print("Welcome!")
1.2 while循环
猜年龄:
- #!/usr/bin/env python
- count = 0
- boy_age = 56
- while count <100:
- guess_age = input('age>>')
- if guess_age.isdigit():
- guess_age = int(guess_age)
- else:
- continue
- if guess_age == boy_age:
- print('You are right')
- break
- elif guess_age > boy_age:
- print('smaller')
- else:
- print('older')
- count +=1
- else:
- print('You have aleardy paste too many choice!)
1.3 break和continue
break指跳出整个循环,continue指跳出当次循环。具体示例可运行下面两端代码
代码一:
- #!/usr/bin/env python
- for i in range(10):
- print(i)
- if i == 5:
- break
- else:
- print('The loop is over')
代码二:
- #!/usr/bin/env python
- for i in range(10):
- for j in range(10):
- if j <6:
- continue
- print(i,j)
1.4 数据类型——数字
1.4.1 整型
数据类型(数字、字符串、列表、字典、元组)
变量:用来记录状态
变量值的变化即状态的变化,程序运行的本质就是用来处理一系列状态的变化
- 在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
- 在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~922337203685477580
整形:可以有十进制、八进制、十六进制
- oct(10) #将10进制转为8进制
- hex(10) #将10进制转为16进制
- bin(10) #将10进制转为2进制
- int(10) #以整形输出
- int('10',base=8) #第一个参数是字符串,base指定进制
1.4.2 长整型
长整型仅在python2中存在,python3中已取消。
- 跟C语言不同,Python的长整数没有指定位宽,
- 即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
- 注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
1.4.3 浮点型
- 浮点数用来处理实数,即带有小数的数字。
- 浮点表示的形式是小数,但小数不一定都是浮点型,23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
1.4.4 布尔型
只有两个值,真和假。True,False;1,0。
- bool(0)
- bool(1)
1.4.5 复数型
- 复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
- 注:Python中存在小数字池:-5 ~ 257
1.5 数据类型——字符串
- str('') #以字符串输出
- msg1 = 'a\tb'
- print(msg1.expandtabs(10)) #确定\t代表几个空格
- msg = 'hello world'
- print(msg.capitalize()) #首字母大写
- print(msg.center(20,'*')) #定义字符串长度为20,居中显示,左右用*号
- print(msg.count(l)) #统计字母l出现的次数
- print(msg[3]) #把字符串看做列表,第一个字母下标是0*****
- print(msg[0:3]) #顾头不顾尾
- print(msg.count('l',4,-1)) #在这个范围内统计l字母个数
- print(msg.endswith('l')) #判断字符串是否已括号内字符结尾,返回布尔值
- print(msg.find('d')) #返回位置,返回值是下标
- print('{0}{1}{0}'.format('name','age'))
- print('{name}'.format(name='alex'))
- print('{}{}'.format('name','age'))
- print(msg.index('e')) #显示索引位置
- msg2 = 'a123'
- print(msg2.isalnum()) # 至少一个字符,且都是字母或数字才返回True
- print(msg2.isalpha()) #至少一个字符,且都是字母才返回True
- msg3 = 123
- print(msg3.isdecimal()) #10进制数字字符
- msg4 = '10'
- print(msg4.isdigit()) #!!!整形数字字符
- msg5 = '10.3'
- print(msg5.isnumeric()) #
- isdigit()
- True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
- False: 汉字数字
- Error: 无
- isdecimal()
- True: Unicode数字,,全角数字(双字节)
- False: 罗马数字,汉字数字
- Error: byte数字(单字节)
- isnumeric()
- True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
- False: 无
- Error: byte数字(单字节)
- msg6 = 'if'
- print(msg.isidentifier()) #字符串为关键字返回True
- msg7 = 'aaa'
- print(msg7.islower()) #至少一个字符,且都是小写字母才返回True
- msg8 = ' '
- print(msg8.isspace()) #至少一个字符,且都是空格才返回True
- msg9 = 'Hello'
- print(msg9.istitle()) #至少一个字符,且为标题为真,即每个单词首字母大写
- msg10 = 'A'
- print(msg10.isupper()) #至少一个字符,且都为大写为真
- msg11 = 'abc'
- print(msg11.ljust(10,'*')) #左对齐,一共10个,不足用*不全
- print(msg11.rjust(10,'*')) #右对齐
- print(msg11.center(10,'*')) #居中对齐
- print(msg11.lower()) #大写转小写
- print(msg11.upper()) #小写转大写
- print(msg11.swapcase()) #大小写互换
- msg12 = ' asdf '
- print(msg12.strip()) #去掉空格*****
- print(msg12.lstrip()) #去掉左边空格
- print(msg12.rstrip()) #去掉右边空格
- msg13 = 'my name is abcd'
- table = str.maketrans('abcd','alex')
- print(msg13.translate(table)) #对字符串进行替换,必须一一对应
- msg14 = 'abc'
- print(msg14.zfill(20)) #字符串右对齐,不够用0填充
- msg15 = 'abc'
- print(msg15.replace('ab','dd'))
- 字符串常用操作:移除空白,分割,长度,索引,切片
1.6 数据类型——列表
- names = [] #空列表
- names = ['lizhong','zhongge','zhong'] #向列表中存数据
- names[1] #取出来的是zhongge,支持切片
#列表的增删改查 - names.append('xiaomiao') #新增
- names.insert(2,'jiajia') #插入到zhongge后
- names.remove('zhongge') #删除zhongge
- del names[1] #删除
- names.pop(2) #删除此数值并返回此,括号里空则删最后一个
- names[0] = '李众’ #修改指定位置的
- print(names[-2]) #查后面找第二个
- print(names[0::2]) #取所有,隔一个取一个
- print(names[-3:]) #取最后三个
- print(names.index('lizhong') #如果没有,报错;如果有,返回下标
- first_index = names.index('lizhong')
- second_index = names[first_index+1].index('lizhong')
- print('second',second_index+first_index+1)
- print('count',names.count('lizhong') #count是计数
- names.clear() #清空列表
- L1 = ['sldj','slkjf']
- names.extend(L1) #两个列表的合并
- print(names)
- names.reverse() #反转列表
- print(names)
- names.sort() #列表按ascii排序
- print(names)

浙公网安备 33010602011771号