python中的数据类型篇_1

1.数据类型篇

1.1 基本数据类型
1.1.1 逻辑推理练习(类型转换)

不运行程序,说出下面程序的执行结果

4.0 == 4
"4.0" == 4
bool("1")
bool("0")
str(32)
int(6.26)
float(32)
float("3.21")
int("434")
int("3.42")
bool(-1)
bool("")
bool(0)
"wrqq" > "acd"
"ttt" == "ttt "
"sd"*3
"wer" + "2322"

答案如下

true
false
true
true
"32"
6
32.0
3.21
434
会报错  # 标记
true
false
false
true
false  # 标记
sdsdsd
wer2322

0 , 空字符串, None在条件判断语句中等价于False, 其他数值都等价于True
字符串"3.42"可以转成float类型数据3.42, 3.42可以转成int类型数据3,但是字符串"3.42"却不可以直接使用int函数转成3

1.1.2 数据类型考察

请说出下面表达式结果的类型

"True"
"Flase"
4 >= 5
5 
5.0
True

答案如下

字符串
字符串
bool
int
float
bool
1.1.3 交互式解释器练习

请在交互式解释器里回答下面的题目

35次方
72求模
95,要求有小数部分
95,要求没有小数部分
用程序计算根号16,也就是162分之一次方

答案如下

print(3 ** 5)
print(7%2)
print(9/5)
print(9//5)  
import math
print(math.sqrt(16))

除法中,希望结果有小数部分时用/, 希望只保留整数部分时用 //

1.2 字符串练习题(基本数据类型)
1.2.1 字符串内置方法练习

在交互式解释器中完成下列题目

计算字符串 "cd" 在 字符串 "abcd"中出现的位置
字符串 "a,b,c,d" ,请用逗号分割字符串
"{name}喜欢{fruit}".format(name="李雷") 执行会出错,请修改代码让其正确执行
string = "Python is good", 请将字符串里的Python替换成 python,并计算字母O出现了几次,和该字符串的长度
有一个字符串 string = "python修炼第一期.html",请写程序从这个字符串里获得.html前面的部分,要用尽可能多的方式来做这个事情
"this is a book",请将字符串里的book替换成apple
"this is a book", 请用程序判断该字符串是否以this开头
"this is a book", 请用程序判断该字符串是否以apple结尾
"This IS a book", 请将字符串里的大写字符转成小写字符
"This IS a book", 请将字符串里的小写字符,转成大写字符
"This IS a book", 请将每个单词的首字母转成大写
"this is a book\n", 字符串的末尾有一个回车符,请将其删除
str1 = "this is a book"
str2 = "这是一本书"
请将str1,str2两个字符串用3种方法进行拼接

答案如下

print("a,b,c,d".split(","))
print("{name}喜欢{fruit}".format(name="李雷", fruit="apple"))
print("Python is good".replace("Python", "python"))
print("Python is good".count("o"))
print(len("python is good"))
string = "python修炼第一期.html"
print(string[0:11])  # print(string[0:-5])
print(string[0:(string.find(".html"))])
print("this is a book".startswith("this"))
print("this is a book".endswith("book"))
print("This IS a book".lower())
print("This IS a book".upper())
print("This IS a book".title())
print("this is a book\n".strip())
print(str1 + str2)
print("%s%s" % (str1, str2))
print("{}{}".format(str1, str2))

strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列

1.2.2 字符串切片(字符串)

口述回答下面代码的执行结果

num_str = "0123456789"
print(num_str[2:6])
print(num_str[2:])
print(num_str[:6])
print(num_str[:])
print(num_str[::2])
print(num_str[1::2])
print(num_str[-1])
print(num_str[2:-1])
print(num_str[-2:])
print(num_str[::-1])

答案如下

2345
23456789
012345
0123456789
02468
13579
9
2345678
89
9876543210
1.3 列表练习题(组合数据类型)
1.3.1 列表基础考察

已知一个列表 list = [1,2,3,4,5]

求列表的长度
判断6 是否在列表中
lst + [6, 7, 8] 的结果是什么?
lst*2 的结果是什么
列表里元素的最大值是多少
列表里元素的最小值是多少
列表里所有元素的和是多少
在索引1的后面新增一个的元素10
在列表的末尾新增一个元素20

答案如下

list = [1, 2, 3, 4, 5]
print(len(list))
print(6 in list)
print(list + [6, 7, 8])
print(list * 2)
print(max(list))
print(min(list))
print(sum(list))
list.insert(1, 10)
print(list)
list.append(20)
print(list)
1.3.2 修改列表

list = [1, [4, 6], True] 请将列表里所有数字修改成原来的两倍

list = [1, [4, 6], True]
list[0] = 2
list[1][0] = 8
list[1][1] = 12
print(list)

用函数实现

def double_list(lst):
    for index, item in enumerate(lst):
        if isinstance(item, bool):
            continue
        if isinstance(item, (int, float)):
            lst[index] *= 2
        if isinstance(item, list):
            double_list(item)


if __name__ == '__main__':
    lst = [1, [4, 6], True]
    double_list(lst)
    print(lst)

答案如下

1.3.4 合并列表
lst = [1,2,3]
lst2 = [4,5,6]

答案如下

list = [1, 2, 3]
print(id(list))  # 查看地址
list2 = [4, 5, 6]
list.extend(list2)  # 合并
print(list)
print(id(list))

list的内存地址都没有发生变化,只是列表里的内容发生了变化

1.3.5 合并字符串
str1 = "1,2,3"
str2 = "4,5,6"
不使用 + 号运算符,请将str2合并到str1的末尾,并思考,这个过程中,是否产生了新的字符串

答案如下

str1 = "1,2,3"
print(id(str1))  # 查看内存地址
str2 = "4,5,6"
str1 += str2  # 拼接
print(str1)
print(id(str1))

合并前后的内存地址是不一样

1.3.6 统计练习

列表lst 内容如下

lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
请写程序完成下列题目

找出列表里的最大值
找出列表里的最小值
找出列表里最大值的个数
计算列表里所有元素的和
计算列表里元素的平均值
计算列表的长度
找出元素6在列表中的索引

答案如下

lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
print(max(lst))
print(min(lst))
print(lst.count(max(lst)))
print(sum(lst))
print(sum(lst)/float(len(lst)))
print(len(lst))
print(lst.index(6))

下面的题目不允许写代码,仅凭思考来回答
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]

lst[2:4] 的值是什么
lst[1: -3]的值是什么
lst[-5]的值是什么
lst[:-4] 的值是什么
lst[-4:] 的值是什么

答案如下

print(lst[2:4])
print(lst[1: -3])
print(lst[-5])
print(lst[:-4])
print(lst[-4])
1.3.7 列表操作练习

列表lst 内容如下

lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
请写程序完成下列操作

在列表的末尾增加元素15
在列表的中间位置插入元素20
将列表[2, 5, 6]合并到lst中
移除列表中索引为3的元素
翻转列表里的所有元素
对列表里的元素进行排序,从小到大一次,从大到小一次

答案如下

lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
lst.append(15)
print(lst)
lst.insert(len(lst) // 2, 20)
print(lst)
lst.extend([2, 5, 6])
print(lst)
lst.remove(lst[3])
print(lst)
lst.reverse()
print(lst)
lst.sort()  # 升序
print(lst)
lst.sort(reverse=True)
print(lst)
1.3.8 复杂列表练习
1.4 字典练习题(组合数据类型)
1.4.1 字典基本操作
字典内容如下

dic = {
    'python': 95,
    'java': 99,
    'c': 100
}
用程序解答下面的题目

字典的长度是多少
请修改'java' 这个key对应的value值为98
删除 c 这个key
增加一个key-value对,key值为 php, value是90
获取所有的key值,存储在列表里
获取所有的value值,存储在列表里
判断 javascript 是否在字典中
获得字典里所有value 的和
获取字典里最大的value
获取字典里最小的value
字典 dic1 = {'php': 97}, 将dic1的数据更新到dic中

答案如下

print(len(dic))
dic['java'] = 98
print(dic)
del (dic["c"])
print(dic)
dic['phd'] = 90
print(dic)
lst1 = list(dic.keys())
print(lst1)
lst2 = list(dic.values())
print(lst2)
print("javascript" in dic)
print(sum(dic.values()))
print(max(dic.values()))
print(min(dic.values()))
dic1 = {'php': 97}
dic.update(dic1)
print(dic)
1.4.2 字典应用(买水果)
小明去超市购买水果,账单如下

苹果  32.8
香蕉  22
葡萄  15.5
请将上面的数据存储到字典里,可以根据水果名称查询购买这个水果的费用

答案如下

info = {
    '苹果':32.8,
    '香蕉': 22,
    '葡萄': 15.5
}
1.4.3 字典应用(买水果2)
小明,小刚去超市里购买水果

小明购买了苹果,草莓,香蕉,一共花了89块钱,,小刚购买了葡萄,橘子,樱桃,一共花了87块钱

请从上面的描述中提取数据,存储到字典中,可以根据姓名获取这个人购买的水果种类和总费用。

答案如下

info = {
    "小明": {
        "fruits": ["苹果", "草莓", "香蕉"],
        "money": 89
    },
    "小岗": {
        "fruits": ["葡萄", "橘子", "樱桃"],
        "money": 87
    }
}
1.5 集合练习题(组合数据类型)
1.5.1集合间的运算
lst1 = [1, 2, 3, 5, 6, 3, 2]
lst2 = [2, 5, 7, 9]
哪些整数既在lst1中,也在lst2中
哪些整数在lst1中,不在lst2中
两个列表一共有哪些整数

答案如下

lst1 = [1, 2, 3, 5, 6, 3, 2]
lst2 = [2, 5, 7, 9]

set1 = set(lst1)
set2 = set(lst2)

# 哪些整数既在lst1中,也在lst2中
print(set1.intersection(set2))

# 哪些整数在lst1中,不在lst2中
print(set1.difference(set2))

# 两个列表一共有哪些整数
print(set1.union(set2))
1.6 元组练习题(组合数据类型)
1.6.1 元组概念考察

写出下面代码的执行结果和最终结果的类型

(1, 2)*2
(1, )*2
(1)*2

答案如下

print((1, 2) * 2)
print((1,) * 2)
print((1) * 2)

第一题应该没有异议,关键是第2题和第3题,元组里只有一个数据时,必须有逗号,如果没有逗号,就变成了第3题的形式,第3题本质上是1*2,那对小括号就如同我们小学学过的小括号一样,只是为了体现运算优先级而已。

当元组只有一个数据时,如果不省略了逗号,那么小括号的作用就不再是表示元组,而是表示运算优先级

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值