Python编程序设计基础与应用答案2


每个题目均为自己设计的代码,优化与重构方面与标准答案可能有所不同。

​ 参考教材: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)

文章作者: 陈细利
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陈细利 !
评论
 上一篇
Python编程序设计基础与应用答案1 Python编程序设计基础与应用答案1
每个题目均为自己设计的代码,优化与重构方面与标准答案可能有所不同。 ​ 参考教材:Python程序设计基础与应用(机械工业出版社/董付国) 3-13编写程序,让用户在键盘上输入一个自然数n,然后在区间【1,5n】上随机生成n个
下一篇 
Python基础语法1 Python基础语法1
参考教材:Python程序设计基础与应用(机械工业出版社/董付国) ​ 本复习资料中语法出现顺序与参考教材保持一致,为巩固记忆,全程手打,没有复制粘贴。(因此可能会出现错别字请见谅) 由于内容过多,将逐步发布。 第一章1.标准
  目录