每个题目均为自己设计的代码,优化与重构方面与标准答案可能有所不同。
参考教材:Python程序设计基础与应用(机械工业出版社/董付国)
4-5编写程序,实现抓狐狸游戏。假设墙上有5个洞(编号分别为0、1、2、3、4),其中一个洞里由狐狸,人类玩家输入洞口编号,如果洞里有狐狸就抓到了;如果洞里没有狐狸就第二天再来抓。但在第二天人类玩家来抓之前,狐狸会跳到隔壁的洞里。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
# 设置5个洞,随机把狐狸放进其中一个洞
caves = [0, 0, 0, 0, 0]
fox = random.randrange(0, 5)
caves[fox] = 1
flag = True
while flag:
# 让用户选择要探索的洞
print("输入回车即可退出游戏。")
number = input("请选择一个洞口(1-5号洞里选择):")
# 用户随时可以结束游戏
if number == '':
break
# 提示用户要输入正确的数字
elif int(number) > 5 or int(number) < 1:
number = int(number)
print("请输入1-5之间的数字")
# 如果猜对了就抓到狐狸,否者狐狸将换洞
else:
if caves[int(number) - 1] == 1:
print("恭喜你捉到了狐狸,游戏结束。")
flag = False
else:
print("你没有捉到狐狸,请明天再来")
caves[fox] = 0
number = random.choice([-1, 1])
new_fox = fox + number
caves[new_fox] = 1
4-6编写程序,生成一个包含20个介于1到50之间随机整数的列表,然后使用插入法对给定整数列表中的所有元素升序排列。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
# 列表1用存储20个随机数,然后用插入法将列表1的元素插入列表2
list_1 = []
list_2 = []
# 生成20个随机数存在列表1中
for i in range(20):
x = random.randint(1, 51)
list_1.append(x)
print(list_1)
# 依次将列表的最小值移到列表2的末端,移动的数从列表1中清楚
for i in range(20):
m = min(list_1)
list_2.append(m)
list_1.remove(m)
print(list_2)
4-7编写程序,生成一个包含20个介于1到50之间随机整数的列表,将其循环左移5个元素。所谓循环左移是指,每次移动把列表最左侧的元素移出列表然后追加到列表尾部。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
list_1 = []
# 生成20个随机数存在列表1中
for i in range(20):
x = random.randint(1, 51)
list_1.append(x)
print(list_1)
print(list_1[5:] + list_1[:5])
4-8给定一个包含若干数字的列表A,编写程序计算满足0<=a<=b<n(其中n为序列长度)的A[b]-A[a]的最大值。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
# 生成含有10个随机数的列表
list_1 = [random.randrange(1, 50) for i in range(10)]
print(list_1)
# 创建用于储存结果的列表
list_2 = []
# 计算A【b】- A【a】
for index_a, a in enumerate(list_1):
for index_b, b in enumerate(list_1[index_a - 1:]):
result = b - a
list_2.append(result)
print(list_2)
max_result = max(list_2)
print(max_result)
4-9 6岁的小明上楼梯,一步只能迈1个或3个台阶,现在有段15个台阶的楼梯,要想上到第15个台阶,编写程序计算小明有多少种上发。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 参考了标准答案,关键在于弄清楚数学公式
n = 15
a = 1
b = 2
c = 4
for i in range(n-3):
c = a + b + c
b = c
a = b
print(c)
4-13 编写程序,让用户输入一个整数,如果输入的是正数就输出1,如果输入的是负数就输出-1,否则输出0.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
number = int(input("请输入一个整数:"))
# 不同的数返回不同的值
if number > 0:
print(1)
elif number < 0:
print(-1)
else:
print(0)