第二章 变量和简单的数据类型
练习2.1:简单信息
题目:将一条消息赋给变量,并将其打印出来。
message = "hello world!"
print(message)
练习2.2:多条简单信息
题目:将一条消息赋给变量,并将其打印出来;再将变量的值修改为一条新信息,并将其打印出来。
message = "hello world!"
print(message)
message = "hello python!"
print(message)
练习2.3:个性化信息
题目:用变量表示一个人的名字,并向其显示一条消息。显示的消息应非常简单,如下所示。
Hello Eric, would you like to learn some Python today?
name = "Eric"
message = f"Hello {name}, would you like to learn some Python today?"
print(message)
练习2.4:调整名字的大小写
题目:用变量表示一个人的名字,再分别以全小写、全大写和首字母大写的方式显示这个人名。
name = "healer"
print(name.lower())
print(name.upper())
print(name.title())
练习2.5:名言1
题目:找到你钦佩的名人说的一句名言,将这个名人的姓名和名言打印出来。输出应类似于下面这样(包括引号)。
Albert Einstein once said, “A person who never made a mistake never tried anything new.”
print('Albert Einstein once said, “A person who never made a mistake never tried anything new.”')
练习2.6:名言2
题目:重复练习 2.5,但用变量 famous_person 表示名人的姓名,再创建要显示的消息并将其赋给变量 message,然后打印这条消息。
first_name = "albert"
last_name = "einstein"
famous_person = f"{first_name.title()} {last_name.title()}"
message = f"{famous_person} once said, “A person who never made a mistake never tried anything new.”"
print(message)
练习2.7:删除人名中的空白
题目:
用变量表示一个人的名字,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合 "\t" 和 "\n" 各一次。
打印这个人名,显示其开头和末尾的空白。然后,分别使用函数 lstrip()、rstrip() 和 strip() 对人名进行处理,并将结果打印出来。
name = "\thealer\n"
print(name)
name1 = name.lstrip()
name2 = name.rstrip()
name3 = name.strip()
print(name1)
print(name2)
print(name3)
注意:题目要求分别使用删除空白的函数,因此在修改的时候要将修改后的结果重新赋值给新的变量
练习 2.8:文件扩展名
题目:Python 提供了 removesuffix() 方法,其工作原理与 removeprefix() 很像。请将值 'python_notes.txt' 赋给变量 filename,再使用 removesuffix() 方法来显示不包含扩展名的文件名,就像文件浏览器所做的那样。
filename = "python_notes.txt"
filename = filename.removesuffix(".txt")
print(filename)
注意:removesuffix的作用是删除后缀,如果你输入的想删除的内容不是连续的从某个字母到最后一个字母,而是中间的部分或者是不在这个变量内容中的字母的时候,这个函数不会对你的变量有任何操作会直接返回原来的内容。
练习2.9:数字8
题目:编写 4 个表达式,分别使用加法、减法、乘法和除法运算,但结果都是数字 8。为了使用函数调用 print() 来显示结果,务必将这些表达式用括号括起来。
print(5 + 3)
print(9 - 1)
print(2 * 4)
print(int(16 / 2)) #(1)
注意:虽然我们知道除法的运算结果默认为浮点数,但是如果我们想要得到整数的结果可以在运算结果前加上int()如(1)所示,得到结果就是8了。同时,这种方法是将小数点后的内容全部舍去,注意跟我们平常所说的四舍五入相区别。例如int(15/2)的结果应为7。
练习2.10:最喜欢的数
题目:用一个变量来表示你最喜欢的数,再使用这个变量创建一条消息,指出你最喜欢的数是什么,然后将这条消息打印出来。
number = 30
message = f"My favourite number is {number}!"
print(message)
练习2.11:添加注释
略
练习2.12:Python之禅
略
第三章 列表简介
练习3.1:姓名
题目:将一些朋友的姓名存储在一个列表中,并将其命名为 names。依次访问该列表的每个元素,从而将每个朋友的姓名都打印出来。
names = ["Healer", "Stephen", "Curry"]
print(names[0])
print(names[1])
print(names[2])
练习3.2:问候语
题目:继续使用练习 3.1 中的列表,但不打印每个朋友的姓名,而是为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名。
names = ["Healer", "Stephen", "Curry"]
print(f"Good evening, {names[0]}!")
print(f"Good evening, {names[1]}!")
print(f"Good evening, {names[2]}!")
练习3.3:自己的列表
题目:想想你喜欢的通勤方式,如骑摩托车或开汽车,并创建一个包含多种通勤方式的列表。根据该列表打印一系列有关这些通勤方式的陈述。
cars = ["Ferrari", "Mercedes", "Aston Martin"]
print(f"I would like to own a {cars[0]}.")
print(f"I would like to own a {cars[1]}.")
print(f"I would like to own a {cars[2]}.")
练习3.4:嘉宾名单
题目:如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少三个你想邀请的人,然后使用这个列表打印消息,邀请这些人都来与你共进晚餐。
members = ["mom", "dad", "brother"]
print(f"{members[0].title()}, would you like to have a dinner with me?")
print(f"{members[1].title()}, would you like to have a dinner with me?")
print(f"{members[2].title()}, would you like to have a dinner with me?")
练习3.5:修改嘉宾名单
题目:你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。以完成练习 3.4 时编写的程序为基础,在程序末尾添加函数调用 print(),指出哪位嘉宾无法赴约。修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。再次打印一系列消息,向名单中的每位嘉宾发出邀请。
members = ["mom", "dad", "brother"]
print("Brother can not come to the dinner.")
members[2] = "sister"
print(f"{members[0].title()}, would you like to have a dinner with me?")
print(f"{members[1].title()}, would you like to have a dinner with me?")
print(f"{members[2].title()}, would you like to have a dinner with me?")
练习3.6:添加嘉宾
题目:你刚找到了一张更大的餐桌,可容纳更多的嘉宾就座。请想想你还想邀请哪三位嘉宾。
以完成练习 3.4 或练习 3.5 时编写的程序为基础,在程序末尾添加函数调用 print(),指出你找到了一张更大的餐桌。
- 使用 insert() 将一位新嘉宾添加到名单开头。
- 使用 insert() 将另一位新嘉宾添加到名单中间。
- 使用 append() 将最后一位新嘉宾添加到名单末尾。
- 打印一系列消息,向名单中的每位嘉宾发出邀请。
members = ["mom", "dad", "brother"]
print("Brother can not come to the dinner.")
members[2] = "sister"
print("I found a bigger table.")
members.insert(0, "Tom")
members.insert(2, "Max")
members.append("David")
print(f"{members[0].title()}, would you like to have a dinner with me?")
print(f"{members[1].title()}, would you like to have a dinner with me?")
print(f"{members[2].title()}, would you like to have a dinner with me?")
print(f"{members[3].title()}, would you like to have a dinner with me?")
print(f"{members[4].title()}, would you like to have a dinner with me?")
print(f"{members[5].title()}, would you like to have a dinner with me?")
练习3.7:缩短名单
代码:
members = ["mom", "dad", "brother"]
print("Brother can not come to the dinner.")
members[2] = "sister"
print("I found a bigger table.")
members.insert(0, "Tom")
members.insert(2, "Max")
members.append("David")
print("Sorry, I can just invite two people now.")
print(f"{members.pop().title()}, I'm very sorry about I can't have the dinner with you.")
print(f"{members.pop().title()}, I'm very sorry about I can't have the dinner with you.")
print(f"{members.pop().title()}, I'm very sorry about I can't have the dinner with you.")
print(f"{members.pop().title()}, I'm very sorry about I can't have the dinner with you.")
print(f"{members[0].title()}, would you like to have a dinner with me?")
print(f"{members[1].title()}, would you like to have a dinner with me?")
del members[0]
del members[0] #(1)
print(members)
结果:
Brother can not come to the dinner.
I found a bigger table.
Sorry, I can just invite two people now.
David, I'm very sorry about I can't have the dinner with you.
Sister, I'm very sorry about I can't have the dinner with you.
Dad, I'm very sorry about I can't have the dinner with you.
Max, I'm very sorry about I can't have the dinner with you.
Tom, would you like to have a dinner with me?
Mom, would you like to have a dinner with me?
[]
注意:在(1)的位置删除元素的时候注意要删除索引为0的元素,因为在上面已经删除了第一个元素了只剩下一个元素了
练习3.8:放眼世界
题目:想出至少 5 个你想去旅游的地方。
- 将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。
- 按原始排列顺序打印该列表。不要考虑输出是否整洁,只管打印原始 Python 列表就好。
- 使用 sorted() 按字母顺序打印这个列表,不要修改它。
- 再次打印该列表,核实排列顺序未变。
- 使用 sorted() 按与字母顺序相反的顺序打印这个列表,不要修改它。
- 再次打印该列表,核实排列顺序未变。
- 使用 reverse() 修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。
- 使用 reverse() 再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。
- 使用 sort() 修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。
- 使用 sort() 修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表
country = ["China", "America", "Iceland", "England", "Croatia"]
print(country)
print(sorted(country))
print(country)
print(sorted(country, reverse = True))
print(country)
country.reverse()
print(country)
country.reverse()
print(country)
country.sort()
print(country)
country.sort(reverse = True)
print(country)
注意:对于sort()和reverse()等方法类操作不能直接打印,因为他们返回的是None值
练习3.9:晚餐嘉宾
题目:选择你为完成练习 3.4~练习 3.7 而编写的一个程序,在其中使用 len() 打印一条消息,指出你邀请了多少位嘉宾来共进晚餐。
members = ["mom", "dad", "brother"]
print("Brother can not come to the dinner.")
members[2] = "sister"
print("I found a bigger table.")
members.insert(0, "Tom")
members.insert(2, "Max")
members.append("David")
print(f"I invite {len(members)} people.")
练习3.10:尝试使用各个函数
略
练习3.11:有意引发错误
略
第四章 操作列表
练习4.1:披萨
题目:想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用 for 循环将每种比萨的名称打印出来。
- 修改这个 for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对于每种比萨都显示一行输出,如下所示。
I like pepperoni pizza.
- 在程序末尾添加一行代码(不包含在 for 循环中),指出你有多喜欢比萨。输出应包含针对每种比萨的消息,还有一个总结性的句子,如下所示。
I really love pizza!
pizzas = ["pizza1", "pizza2", "pizza3"]
for pizza in pizzas:
print(pizza)
print(f"I like {pizza}.\n")
print("I really like pizzas!")
练习4.2:动物
题目:想出至少三种有共同特征的动物,将其名称存储在一个列表中,再使用 for 循环将每种动物的名称打印出来
- 修改这个程序,使其针对每种动物都打印一个句子,如下所示。
A dog would make a great pet.
- 在程序末尾添加一行代码,指出这些动物的共同之处,如打印下面这样的句子。
Any of these animals would make a great pet!
animals = ["dog", "cat", "rabbit"]
for animal in animals:
print(animal)
print(f"A {animal} would make a great pet.\n")
print("Any of these animals would make a great pet.")
练习4.3:数到20
题目:使用一个 for 循环打印数 1~20(含)
for value in range(1, 21):
print(value)
练习4.4:100万
题目:创建一个包含数 1~1 000 000 的列表,再使用一个 for 循环将这些数打印出来。(如果输出的时间太长,按 Ctrl + C 停止输出,或关闭输出窗口。)
numbers = list(range(1, 1000001))
for value in numbers:
print(value)
练习4.5:100万求和
题目:创建一个包含数 1~1 000 000 的列表,再使用 min() 和 max() 核实该列表确实是从 1 开始、到 1 000 000 结束的。另外,对这个列表调用函数 sum(),看看 Python 将 100 万个数相加需要多长时间。
numbers = list(range(1, 1000001))
print(min(numbers))
print(max(numbers))
print(sum(numbers))
练习4.6:奇数
题目:通过给 range() 函数指定第三个参数来创建一个列表,其中包含 1~20 的奇数;再使用一个 for 循环将这些数打印出来。
odd_numbers = [value for value in range(1, 21, 2)]
print(odd_numbers)
练习4.7:3的倍数
题目:创建一个列表,其中包含 3~30 内能被 3 整除的数,再使用一个 for 循环将这个列表中的数打印出来。
numbers = list(range(3, 31, 3))
for value in numbers:
print(value)
练习4.8:立方
题目:将同一个数乘三次称为立方。例如,在 Python 中,2 的立方用 2**3 表示。创建一个列表,其中包含前 10 个整数(1~10)的立方,再使用一个 for 循环将这些立方数打印出来。
cubes = list(range(1, 11))
for index in range(0, 10):
cubes[index] = cubes[index] ** 3
print(cubes[index])
练习4.9:立方推导式
题目:使用列表推导式生成一个列表,其中包含前 10 个整数的立方
cubes = [value ** 3 for value in range(1, 11)]
print(cubes)