数字类型内置运算,和字符内置运算

5.7自我总结

1.数字类型内置方法(省略数字类型定义,作用,基本运算)

1.数字类型定义,作用,基本运算

https://www.cnblogs.com/pythonywy/p/10797559.html详细的内容,还有些不足地方下面链接中有说明

https://www.cnblogs.com/pythonywy/p/10800876.html补充说明

2.无内置运算

3.一个值或者多个值

一个值

4.有序或者无序

数字类型为一个值,也不存在索引,所以不存在有序或者无序的这种说法

5.可变或不可变

a = 1
print(di(a))
8791457161872
a += 1
print(id(a))
8791457161904
他们值变了,地址也发生了变化说以为不可变	

2.字符串类型内置方法(省略数字类型定义,作用,基本运算)

1.数字类型定义,作用,基本运算

https://www.cnblogs.com/pythonywy/p/10797559.html详细的内容,还有些不足地方下面链接中有说明

https://www.cnblogs.com/pythonywy/p/10800876.html补充说明

2.运算

1.必须掌握

a)按索引取值
a = 'yang'
#取其中的y
print(a[0])
y
b)切片
切片工具为[头:尾:步(取值的方向)]#如果头,尾不输入默认为最前面,和最后面,步如果步输入贼默认为1
name = 'yang wen yi'
	   #012345678910
#用切片工具取其中的yang wen yi
print(name[:])
#用切片工具取其中的wen
print(name[5:8]) # 顾头不顾尾
print(name[-6:-3])#这里正数或者负数代表的是字符串中数据的位置,正为从左往右数,负为从右往左数。
#用切片工具取其中的yn
print(name[:3:2])
#用切片工具取其中的iy
print(name[:-3:-1])
print(name[10:8:-1]) #这里的-1代表从右往左切,如果这里的-1为1则是从左往右切

c)长度len
name = 'yang'
print(len(name))
d)成员运算in/not in
表示判断什么东西里有没有什么,表示判断
name = 'yang'
print('y' in name)
True
e)移除strip
name1 = '     yan          '
name2 = 'a    yan            a'
print(name1.strip())
#yang
print(name2.strip())
#'a    yan            a'
#strip只移除两端的
f)切分split
name = 'yang,wen,yi'
#按照,把名字切分成3个
print(name.split(',',2))
#['yang', 'wen', 'yi']
#按照,把名字切分成2个
print(name.split(',',2))
#['yang', 'wen,yi']   默认是从左往右
g)循环
name = 'yangwneyi'

for i in name:
    print(i)
'''
y
a
n
g
w
e
n
y
i
'''

2.掌握

a)lstrip&rstrip
#lstrip左端清除  记忆(l=left左,strip清楚)
name = '     yang'
print(name.lstrip())
#yang
#rstrip左端清除 记忆(r=rightt右,strip清除)
b)lower&upper
#LOWER(小写)
name = 'yang WEN'
print(name.lower())
#yang wen #将字符串中的大写变成小写
#upper
name = 'yang WEN'
print(name.upper())
#YANG WEN #将字符串中小写变成大写
c)startswith&endswith
# startswith
name = 'yang WEN'
print(name.startswith('yang'))
#True      #内容从前往后找
print(name.endswith('WEN'))
#True
printprint(name.endswith('NEW'))
#False    #内容从后往前找但是内容是从左往右读写的
d)rsplit

与split类似,但是切割方向从右往左切割

e)join
#JOIN用于字符串的拼接
name = 'yang,wen,yi'
print(' '.join(name))
#y a n g , w e n , y i
#如果是列表
name_list = ['yang','wen','yi']
print(''.join(name_list))
#yangwenyi
补充纯数字不能拼接
f)replace
#replace(替换)
name = 'yang wen yi'
print(name.replace('yang','wen'))
#wen wen yi
g)isdigit
salary = '111'
print(salary.isdigit())
#True
salary = '111.1'
print(salary.isdigit())
#False
#是否为整列,第一个是,第二个不是

3.了解

a)find|rfind|index|rindex|count
# str之find()、rfind()、index()、rindex()、count()
name = 'yang wen yi'
print(name.find('yang'))
# 0        
print(name.find('wen'))
#5                        find如果找到结果,则输出为该内容的第一个字符的索引,他找不到会报错
rfind就是从右边开始找结果都是一样的就是开头和找的方向不一样
index找的也是索引与find区别在于他没找会报错
count,找到内容输出为1,找不到内容输入为0
b)center|ljust|rjust|zfill
# str之center()、ljust()、rjust()、zfill()
print(f"'info nick'.center(50,'*'): {'info nick'.center(50,'*')}")
********************info nick*********************  #内容中间,填充两侧
print(f"'info nick'.ljust(50,'*'): {'info nick'.ljust(50,'*')}")
info nick*****************************************  #内容左边,填充右边
print(f"'info nick'.rjust(50,'*'): {'info nick'.rjust(50,'*')}")
*****************************************info nick   #内容右边边,填充左边
print(f"'info nick'.zfill(50): {'info nick'.zfill(50)}")  
 00000000000000000000000000000000000000000info nick     # 默认用0填充

c)expandtabs
# str之expandtabs()
print(f"a\\tb\\tc: %s"%('a\tb\tc\t'))  # 默认制表符8个空格
print(f"'a\\tb\\tc'.expandtabs(32): %s"%('a\tb\tc\t'.expandtabs(32)))
#主要是用来修改\t,输出占位符的个数
d)captalize|swapcase|title
# str之captalize()、swapcase()、title()

captalize()#首字母大写
 swapcase()# 大小写互转
title()#每个字母首字母大写
f)is系列

.is数字系列(只是为了告诉你,判断是否为数字时除了中文数字以后使用isdigit()即可)

  • isdecimal(): 检查字符串是否值包含十进制字符,如果是返回True,否则返回False。
  • isdigit(): 如果字符串只包含数字则返回True,否则返回False。
  • isnumeric(): 如果字符串中只包含数字字符,则返回True,否则返回False。

今日题目

  1. 写代码,有如下变量name = " aleX",请按照要求实现每个功能:

    1. 移除 name 变量对应的值两边的空格,并输出处理结果

      print(name.strip(' '))
      
    2. 判断 name 变量对应的值是否以 "al" 开头,并输出结果

      print(name.startswith('al'))
      
    3. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

      print(name.endswith('X'))
      
    4. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果

      print(name.replace('l','p'))
      
    5. 将 name 变量对应的值根据 “l” 分割,并输出结果。

      print(name.split('l'))
      
    6. 将 name 变量对应的值变大写,并输出结果

      print(name.upper())
      
    7. 将 name 变量对应的值变小写,并输出结果

      print(name.lower())
      
    8. 请输出 name 变量对应的值的第 2 个字符?

      print(name[1])
      
    9. 请输出 name 变量对应的值的前 3 个字符?

      print(name[:3])
      
    10. 请输出 name 变量对应的值的后 2 个字符?

      print(name[-2:])
      
    11. 请输出 name 变量对应的值中 “e” 所在索引位置?

      print(name.index('e'))
      
    12. 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo

      for new_name in name:
          if new_name != name[-1]:
              print(new_name,end='')
      
  2. 编写猜年龄游戏,有以下要求:

    1. 如果3次没有猜对,可以选择继续玩或退出(自定义退出条件)
    2. 可能会有用户会在输入年龄之后再次输入空白,如18 ,请做处理
    3. 可能会有用户会恶意输入导致程序报错,如逗你玩呀,请做处理
age = 18
num = 0
chance = 3
while num < chance:
    ipt_age = input('请输入您的年龄:')
    ipt_age = ipt_age.replace(' ','')
    if not ipt_age.isdigit() :
        print('别乱输入,你这混蛋,请输入数字!!')
        continue
    int_ipt_age = int(ipt_age)
    if int_ipt_age == age:
        print('正确')
        break
    elif int_ipt_age > age:
        print('大了')
    else:
        print('小了')
    num += 1
    if num == 3:
        yes_or_no = input("输入'y'为继续游戏,输入其他任何东西为退出游戏")
        if yes_or_no == 'y'  :
            num = 0
        else:
            print('游戏结束,拜拜')
posted @ 2019-05-07 19:32  小小咸鱼YwY  阅读(669)  评论(3编辑  收藏  举报