Python学习

1、昨日作业讲解

  1)简述ASCII码,unicode码,utf-8之间的编码关系?

    ASCII码只能显示英文,符号,数字,占1个字节

    unicode是万国码,占4个字节

    utf-8英文占1个字节,欧洲占2个字节,亚洲占3个字节

    utf-8是基于unicode开发的,unicode是基于ASCII开发的

  2)计算1-2+3...+99中除了88以外所有数的总和

i = 1
sum = 0
while i < 100:
    if i == 88:
        i += 1
        continue
    if i % 2 ==0:
        sum -= i
    else:
        sum += i
    i += 1
print(sum)
i = 0
j = -1
sum = 0
while i < 99:
    i += 1
    j = -j
    if i == 88:
        continue
    sum += i*j
print(sum)

  3)等待用户输入内容,检测用户输入内容中是否包含敏感字符?如果存在敏感字符,提示:存在敏感字符,请重新输入,并允许用户重新输入并打印。敏感字符:小粉嫩,大铁锤

mg_1 = "小粉嫩"
mg_2 = "大铁锤"
text = " "
flag = 1
while 1:
    text = input("请输入搜索内容:")
    if mg_1 not in text:
       if mg_2 not in text:
           break
       else:
           print("存在敏感字符,请重新输入!")
           continue
    else:
        print("存在敏感字符,请重新输入!")
        continue
print(text)

 2、数据类型

  1)数据类型综述

    int    算术数据,常用于计算

    bool    布尔数据,常用于判断

    str    字符串数据,常用于存储少量数据,并进行操作

    list    列表数据,常用于存储大量的数据

    元祖    只读列表,即数据可以被查询,但不能被修改,字符串的切片操作同样适用于元祖

    dict      字典,Python中唯一的映射类型,采用键值对的形式存储数据

    集合    区间运算,不常用

  2)int类型

    主要用于数字的算术运算

# bit_length() 当十进制用二进制表示时,最少使用的位数
i = 11
data = i.bit_length()
print(data)

  3)bool类型

    布尔运算,反映条件是否成立

    True or False

  4)str类型

    4.1)字符串的索引与切片

      字符串a[索引:切片:步长]  切片原则:顾头不顾尾

      截取字符串的一段,形成新的字符串

a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(a[0:3])   #   顾头不顾尾
print(a[3:7])   #   顾头不顾尾
print(a[18:])   #   默认到最后
print(a[18:-1]) #   -1就是最后一位
print(a[18:26:2])   #   加步长
print(a[26:18:-2])  #   反向加步长

    4.2)字符串的常用操作

      4.2.1)字母大小写类

name = "Shark Jiao and Lily"
print(name.capitalize())    #   Shark jiao and lily     【首字母大写】
print(name.upper())         #   SHARK JIAO AND LILY     【全部大写】
print(name.lower())         #   shark jiao and lily     【全部小写】
print(name.swapcase())      #   sHARK jIAO AND lILY     【大小写翻转】
print(name.title())         #   Shark Jiao And Lily     【每个隔开的单词首字母大写】

      4.2.2)文本类

name = "	Shark Jiao and Lily"
print(name.center(24,"*"))      #   **Shark Jiao and Lily***    【居中,总长度,空白处填充】
print(name.expandtabs())        #           Shark Jiao and Lily 【默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。】

      4.2.3)查找类

name = "Shark Jiao and Lily"
print(name.startswith('a',2,8))     #   True    【判断是否以...开头,顾头不顾尾】
print(name.endswith('a',2,9))       #   True    【判断是否以...结尾,顾头不顾尾】
print(name.find('a'))               #   2       【查询元素,返回下标索引,找不到返回-1】
print(name.index('a'))              #   2       【查询元素,返回下标索引,找不到报错】

      4.2.4)过滤类

name = " Shark Jiao and Lily "
print(name.strip())     #   Shark Jiao and Lily     【默认去除前后空格,可添加符号】
print(name.rstrip())     #    Shark Jiao and Lily     【默认去除右边空格,可添加符号】
print(name.lstrip())     #   Shark Jiao and Lily      【默认去除左边空格,可添加符号】

      4.2.5)计数类

name = "Shark Jiao and Lily"
print(name.count('a'))     #   3     【计数字符串中元素的个数】
print(len(name))            #   19    【计数字符串的长度】

      4.2.6)拆分类

name = "Shark Jiao and Lily"
print(name.split(' '))     #   ['Shark', 'Jiao', 'and', 'Lily']    【使字符串拆分为列表】
print(name.replace('Shark','Python'))   #   Python Jiao and Lily    【字符替换】

      4.2.7)格式化输出

print('我叫{},今年{}岁,我是{}生,{}欢迎你来到异世界!'.format('SharkJiao',18,'','SharkJiao'))
print('我叫{0},今年{1}岁,我是{2}生,{0}欢迎你来到异世界!'.format('SharkJiao',18,''))
print('我叫{name},今年{age}岁,我是{sex}生,{name}欢迎你来到异世界!'.format(name = "SharkJiao",sex = "",age = 18))

       4.2.8)is系列

name = 'SharkJiao'
print(name.isalnum())       #   字符串由字母或数字组成
print(name.isalpha())       #   字符串只由字母组成
print(name.isdigit())       #   字符串只由数字组成

      4.2.9)应用案例

#   验证码应用
s_str = 'acEQ'
you_input = input('请输入验证码,不区分大小写')
if s_str.upper() == you_input.upper():
    print('输入成功!')
else:
    print('请重新输入...')

3、for循环

#   for...in...
s = 'SharkJiao'
for i in s:
    print(i)
#   for...in...
#   顾头不顾尾
for i in range(1,10):
    print(i)
#   for...in...
#   顾头不顾尾
for i in range(1,10,2):
    print(i)
#   for...in...
#   顾头不顾尾
for i in range(10,1,-2):
    print(i)
#   for...in...
s = '我们是共产主义接班人!'
if '共产主义' in s:
    print('您的输入存在敏感词...')

4、数据类型转换

#   int ---->   str
i = 1
s = str(i)
print(type(i),type(s))
#   <class 'int'> <class 'str'>
#   str ---->   int
i = '123'
s = int(i)
print(type(i),type(s))
#   <class 'str'> <class 'int'>
#   int ---->   bool
i = 1
s = bool(i)
print(type(i),type(s))
#   <class 'int'> <class 'bool'>
#   bool ---->   int
i = True
s = int(i)
print(type(i),type(s))
#   <class 'bool'> <class 'int'>
#   str ---->   bool
i = '1'
s = bool(i)
print(type(i),type(s))
#   <class 'str'> <class 'bool'>
#   bool ---->   str
i = True
s = str(i)
print(type(i),type(s))
#   <class 'bool'> <class 'str'>
#   s = ''  ---->   False
#   非空字符串都是True
#   s = '0' ---->   True
s = ''
if s:
    print('您的输入为空,请重新输入...')
else:
    pass

 5、相关练习

name = "aleX leNb"
#   1、移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
#   2、移除 name 变量左边的'al',并输出处理结果
print(name[2:])
#   3、移除 name 变量右边的'Nb',并输出处理结果
print(name[0:7])
#   4、移除 name 变量开头的'a'与最后的'b',并输出处理结果
print(name[1:8])
#   5、判断 name 变量是否以'al'开头,并输出结果
print(name.startswith('al'))
#   6、判断 name 变量是否以'Nb'结尾,并输出结果
print(name.endswith('Nb'))
#   7、将 name 变量对应的值中的所有的'l'替换为'p',并输出结果
print(name.replace('l','p'))
#   8、将 name 变量对应的值中的第一个'l'替换成'p',并输出结果
print(name.replace('l','p',1))
#   9、将 name 变量对应的值根据所有的'l'分割,并输出结果
print(name.split('l'))
#   10、将 name 变量对应的值根据第一个'l'分割,并输出结果
print(name.split('l',1))
#   11、将 name 变量对应的值变大写,并输出结果
print(name.upper())
#   12、将 name 变量对应的值变小写,并输出结果
print(name.lower())
#   13、将 name 变量对应的值首字母'a'大写,并输出结果
print(name.capitalize())
#   14、判断 name 变量对应的值字母'l'出现次数,并输出结果
print(name.count('l'))
#   15、如果判断 name 变量对应的值前四位'l'出现几次,并输出结果
print(name[0:4].count('l'))
#   16、从 name 变量对应的值中找到'N‘对应的索引(如果找不到则报错),并输出结果
print(name.index('N'))
#   17、从 name 变量对应的值中找到'N‘对应的索引(如果找不到则返回-1),并输出结果
print(name.find('N'))
#   18、从 name 变量对应的值中找到'X le'对应的索引,并输出结果
print(name.find('X le'))
#   19、请输出 name 变量对应的值的第2个字符,并输出结果
print(name[1:2])
#   20、请输出 name 变量对应的值的前3个字符,并输出结果
print(name[:3])
#   21、请输出 name 变量对应的值的后2个字符,并输出结果
print(name[-2:])
#   22、请输出 name 变量对应的值中'e'所在索引位置,并输出结果
i = 0
str = name
while i < name.count('e'):
    print(str.find('e'))
    str = str.replace('e','a',1)
    i += 1
s = '132a4b5c'
#   1、通过对li列表的切片形成新的字符串s1,s1 = '123'
s1 = s[s.index('1')] + s[s.index('3')] + s[s.index('2')]
print(s1)
#   2、通过对li列表的切片形成新的字符串s2,s2 = 'a4b'
s21 = s.split('2')
s22 = s21[1].split('5')
s2 = s22[0]
print(s2)
#   3、通过对li列表的切片形成新的字符串s3,s3 = '1245'
s3 = s[0::2]
print(s3)
#   4、通过对li列表的切片形成新的字符串s4,s4 = '3ab'
s4 = s[1:6:2]
print(s4)
#   5、通过对li列表的切片形成新的字符串s5,s5 = 'c'
s5 = s[-1]
print(s5)
#   6、通过对li列表的切片形成新的字符串s6,s6 = 'ba3'
s6 = s[-3:-8:-2]
print(s6)
#   使用while循环打印字符串s='asdfer'中的每个元素
s = 'asdfer'
i = 0
while i < len(s):
    print(s[i])
    i += 1
#   使用for循环打印字符串s='asdfer'中的每个元素
for i in s:
    print(i)
#   实现一个整数加法计算器,如:content = input('请输入内容:')
#   如用户输入:5+9或者5+ 9或者5 +9,然后进行分割,再进行计算
content = input('请输入内容:')
str = content.split('+')
i = 0
sum = 0
while i < len(str):
    str[i] = int(str[i].strip())
    sum += str[i]
    i += 1
print(sum)
#   计算用户输入的内容中有几个整数
#   如:content = input('请输入内容:)
#   如:fhdal234slfh98769fjdla
content = input('请输入内容:')
i = 0
sum = 0
while i < len(content):
    if content[i].isdigit():
        sum += 1
    i += 1
print(sum)
原文地址:https://www.cnblogs.com/SharkJiao/p/9318544.html