day06

今日内容详细

作业讲解

猜年龄的游戏

题目:

1.必写
错误的情况下只能猜三次
正确的情况下直接推出游戏
2.拔高
三次错误之后提示用户三次机会已用完
问他是否继续 如果继续则再给三次机会
如果不继续则直接退出

 

"""思路
编写程序先编写程序的主题功能
然后再考虑完善
"""

答案:

age = 18
# 定义一个记录用户次数的变量
count = 0
# 猜年龄
while True:
# 先判断用户当前是第几次尝试 如果已经三次 提示用户
if count == 3:
print('你已经尝试三次了')
choice = input('您已经尝试三次了 是否还想继续(y/n)>>>:')
# 判断用户是想继续还是放弃
if choice == 'y':
count = 0 # 将用户尝试的次数清零
else:
print('欢迎下次再来哟!!!')
break
guess_age = input('请输入您的年龄>>>:')
# 将字符串的数字转为整型的数字
guess_age = int(guess_age) # 暂且忽略
if guess_age > age:
print('猜大了')
count += 1 # 加一次
elif guess_age < age:
print('猜小了')
count += 1 # 加一次
else:
print('你真棒!!!')
break

 

数据类型的内置方法

 

一. 整型与浮点型

1.整型基本使用
 1、用途
一般用于年龄,生日,整数类型
2、定义方式
age = 18    # age = int(18)(一般写法为前面的一个,后面的是内部的写法)
3、类型转换
int()  将括号内的数据转成整型
print(int(123))                          #123
print(int('123'))                         #123
print(int('[1,2,3,4]'))                  #F
print(int('hello world'))              #F
print(int('11.11'))                       #F

转换为整型时,字符串内待转换的数据内部只能是纯整数

print(int(11.11))                         # 11

当要转换整数的为数字时,转换数字为整数


4、进制转换
print(bin(100)) # 将十进制的100转换成二进制对应的数 0b1100100
print(oct(100)) # 将十进制的100转换成八进制对应的数 0o144
print(hex(100)) # 将十进制的100转换成十六进制对应的数 0x64

0b开头表示二进制数
0o开头表示八进制数
0x开头表示十六进制数

print(int('0b1100100',2)) # 100
print(int('0o144',8)) # 100
print(int('0x64',16)) # 100


2.浮点型
一般用于身高,体重,薪资等带有小数点的数字
height = 183.1 # height = float(183.1)(一般写法为前面的一个,后面的是内部的写法)
print(float(183.1))         # 183.1
print(float('183.1'))           # 183.1
print(float('hello world'))           # F
print(float(183))                        # 183.0            

 

二.字符串类型


作用:名字,性别,国籍,地址等描述信息

定义:在单引号\双引号\三引号内,由一串字符组成

优先掌握的操作
1、按索引取值(正向取+反向取) :只能取


'''索引是从0开始的'''

 

name = 'hello world!'
# print(name[0])     
# print(name[-1])      # -1表示最有一个元素
# print(name[8])
# print(name[-4])


结论:正数表示从左往右 负数从右往左


2、切片(顾头不顾尾,步长)

截取某一段内容

name = 'hello world!'
# print(name[1:4])              # 打印索引 【1】【2】【3】,顾头不顾尾                ell
# print(name[-1:-5:-1])        # 默认的切片方向都是从左往右 -1修改成从右往左       !dlr 
# print(name[1:4:2])            # 第三个参数表示步长(表示间隔多长)     el

3、长度len
统计字符串里面的字符个数

name = 'hello world!'
# print(len(name))            # 12              空格也算字符

4、成员运算in和not in

name = 'hello world!'
# print('hello' in name)
# print('jason' not in name)

5、移除指定的首尾字符strip(******)


# username = input('username>>>:')   
# # 将首尾空格移除
# username = username.strip()

# 两步合并成一步
# username = input('username>>>:').strip()


# if username == 'jason':
# print('登录成功')
# else:
# print('登录失败')

 

# username1 = '$$j$s$o$n$$'
# username2 = '  jason   '
# print(username1.strip('$')) # 移除指定首、尾的所有字符
# print(username2.strip()) # 默认移除首、尾的所有空格


# n1 = '$$jason$$'
# # 移除首指定的字符
# print(n1.lstrip('$'))           # jason$$             left
# # 移除尾指定的字符
# print(n1.rstrip('$'))      # $$jason        right


6、切分split(******)


 按照指定的字符切割字符串


res = 'jason|123|read'
# print(res.split('|')) # ['jason', '123', 'read']


# # 1.指定切割的字符不保留
# # 2.切割之后的结构是一个列表(重要)

 

# res = 'jason|123|read'
# print(res.split('|', maxsplit=1))      # ['jason', '123|read']     maxsplit=切割指定的次数     split=从左往右


# res = 'jason|123|read'
# print(res.rsplit('|',maxsplit=1))      # ['jason|123', 'read']     maxsplit=切割指定的次数     rsplit=从右往左

 

7、循环


for 变量名 in 可迭代变量:(字符串,数组,字典...)
print(变量名)           # 依次获取可迭代变量中单个单个的字符,元素,key值...


# name1 = 'jason'          # str('jason')

 

str将所有类型转化为字符串
# print(type(str(18)))
# print(type(str(11.11)))
# print(type(str('hello')))
# print(type(str([1,2,3,4])))
# print(type(str({'name':'jason'})))
# print(type(str(True))) 

 

# res = 'My NAmE Is JASon 666'

# 将所有的英文字母转成大写
# print(res.upper())        # MY NAME IS JASON 666


# 将所有的英文字母转成小写
# print(res.lower())         # my name is jason 666


图片验证码校验 忽略大小写
# code = 'NaRTs6'
# my_code = input('code>>>:')
# if code.upper() == my_code.upper():
# print('验证码正确')

 

# print(res.isupper())             # False 字符串内部所有的英文字母是否是全大写
# print(res.islower())              # False 字符串内部所有的英文字母是否是全小写


# res = 'jason egon kevin tony'
# 判断字符串是否以jason开头
# print(res.startswith('jason'))      # True
# 判断字符串是否以tony结尾
# print(res.endswith('tony'))        # True

 


# 字符串格式化输出
# %s %d
# format


第一种 与%s一致      按照个数位置 一一传值
# res = 'my name is {} my age is {}'
# print(res.format('jason',18))


第二种 按照索引取值 可以反复使用
# res = 'my name is {0} my age is {1} {0} {0} {0}'
# print(res.format('jason',18))


第三种 指名道姓取值 可以反复使用
# res = 'my name is {name} my age is {age} {name} {name} {name}'
# print(res.format(name='jason',age=18))

 

 

# res = 'jason a a a a sdf se sdf we ras dsa dw e asdsa dwqd sadsa dsadas'
# # 统计字符串中 指定字符出现的个数
# print(res.count('a'))                  # 13
# print(res.count('a', 1, 10))        # 3 指定范围统计


# res = 'my name is jason HAJHSSAJJ SAJS '
# print(res.title())          # 将所有英文单词首字母大写
# print(res.capitalize())           # 首字母大写 后面统一变小写


# res = 'sdewqe圣诞节卡萨'
# print(res.isalpha())     # 判断非数字  特殊符号(如果有数字或特殊符号都会返回False)

 

# 判断是否是纯数字
# guess_age = input('请输入您的年龄>>>:')
# # 判断用户输入的是否是纯数字
# if guess_age.isdigit():
# # 将字符串的数字转为整型的数字
# guess_age = int(guess_age) # 暂且忽略
# else:
# print('请输入纯数字')

 

# 替换
# res = 'my name is egon egon egon'
# 将字符串中所有的egon替换成SB
# print(res.replace('egon','SB')) # 全局替换
# print(res.replace('egon','SB',1)) # 局部替换

 

# 将列表多个元素拼接成字符串
# res = ['jason','egon','kevin','tony']
# res1 = ['jason','egon','kevin','tony',123]
# # print('|'.join(res))        # jason|egon|kevin|tony
# print('|'.join(res1))         # 只能是字符串类型拼接
```

3.列表内置方法


# 中括号括起来 内存可以存放多个元素
# 元素与元素之间逗号隔开 元素可以是任意数据类型

name_list = ['jason', 'egon', 'tony']      # name_list = list(['jason', 'egon', 'tony'])
# print(type(list(18)))          # 不能
# print(type(list(11.11)))      # 不能
# print(type(list('hello')),list('hello'))         # 可以 ['h', 'e', 'l', 'l', 'o']
# print(type(list([1,2,3,4])))                 #可以
# print(type(list({'name':'jason'})),list({'name':'jason'}))          # 可以 ['name']
# print(type(list(True)))      # 不能
'''能够支持for循环的数据 都能够被list转换成列表'''

 

1.索引取值

# print(name_list[0])
# print(name_list[-1])


2.切片操作
# print(name_list[0:2])
# print(name_list[0:2:2])
# print(name_list[-1:-3:-1])


3.统计列表中元素的个数
# print(len(name_list))    # 3

# 列表元素的CURD(增删改查)
# name_list[1] = 'egon快回来!'
# print(name_list)
# 末尾追加单个元素
# name_list.append('kevin')
# print(name_list)        # ['jason', 'egon', 'tony', 'kevin']
# name_list.append([11,22,33,44]) # ['jason', 'egon', 'tony', [11, 22, 33, 44]]
# print(name_list)
# 插入元素
# name_list.insert(0,'jack')
# print(name_list) # ['jack', 'jason', 'egon', 'tony']
# 扩展列表
# l1 = [11,22,33,44,55,66,77]
# # for i in l1:
# # name_list.append(i)
# # print(name_list)
# name_list.extend(l1)       # extend等价于for+append
# print(name_list) # ['jason', 'egon', 'tony', 11, 22, 33, 44, 55, 66, 77]

# 通用的删除操作
# del name_list[1]
# print(name_list)      # ['jason', 'tony']

# res1 = name_list.remove('tony') # 指名道姓的删除
# print(name_list)      # ['jason', 'egon']
# print(res1) # None

# res = name_list.pop() # 默认尾部弹出元素
# print(name_list) # ['jason', 'egon']
# print(res)

# res = name_list.pop(1) # 默认指定索引位置的元素
# print(name_list) # ['jason', 'tony']
# print(res) # egon


# l1 = [11,22,33,3,3,3,2,3,23,4,34,3,4,3,4]
# print(l1.count(3))        # 6         统计列表中某个元素出现的次数

# name_list.clear()             # 清空列表
# print(name_list) # []


l2 = [11,88,22,44,33,77,66,55]
# # l2.sort()          # 排序 默认是升序
# # print(l2)            # [11, 22, 33, 44, 55, 66, 77, 88]
# l2.sort(reverse=True)        # reverse=True 降序
# print(l2)            # [88, 77, 66, 55, 44, 33, 22, 11]

# l2.reverse() # 倒序
# print(l2)

```

可变不可变

 

可变类型
值改变 内存地址不变
不可变类型
值改变 内存地址一定变

不可变类型
# a = 1
# print(id(a))      # 140736875403024
# a = 2
# print(id(a))      # 140736875403024


可变类型
l1 = [11,22]
print(id(l1))           # 2133952624128
l1.append(666)
print(id(l1))             # 2133952624128

posted @ 2021-06-02 19:13  Gnomeshghy  阅读(36)  评论(0)    收藏  举报