《python语言程序设计基础》(第二版)第三章课后习题参考答案

第三章 基本数据类型

目录

文章目录

          • 3.1 计算重量
          • 3.2 天天向上(7天为一周期)
          • 3.3 天天向上续(10/15天休息一天)
          • 3.4 回文数判断
          • 3.5 田字格输出
          • 3.6 文本进度条
          • 3.7 文本风格(省略)
          • 3.8 安装第三方库(省略)

3.1 计算重量
weight = eval(input('请输入你的体重(kg):'))
for i in range(10):
    weight_earth = weight + 0.5 * (i + 1)
    weight_moon = weight_earth * 0.165
    print('未来第 {} 年地球体重为 {:.2f} kg,月球体重为 {:.2f} kg'.format(i + 1, weight_earth, weight_moon))
3.2 天天向上(7天为一周期)
ability = 1  # 初始能力值为1
consecutive_days = 0  # 连续学习天数
current_day = 1  # 当前周期的天数

for i in range(365):
    consecutive_days += 1
    current_day += 1

    # 每7天为一个周期
    if current_day > 7:
        current_day = 1

    # 如果中断学习,重置连续学习天数
    if current_day == 1:
        consecutive_days = 0

    # 如果连续学习天数小于等于3,能力值不变
    if consecutive_days <= 3:
        ability = ability
    # 如果连续学习天数大于3,每天能力增长为前一天的1%
    else:
        ability *= 1.01

    # 每个周期的最后一天也需要计算
    if current_day == 7:
        consecutive_days = 0
        ability *= 1.01

print("365天后的能力值为:", round(ability, 2))
3.3 天天向上续(10/15天休息一天)
def rest_day_interval(n):
    ability = 1  # 初始能力值为1
    consecutive_days = 0  # 连续学习天数
    current_day = 1  # 当前周期的天数

    for i in range(365):
        consecutive_days += 1
        current_day += 1

        # 每7天为一个周期
        if current_day > 7:
            current_day = 1

        # 如果中断学习,重置连续学习天数
        if (consecutive_days - 1) % n == 0 and consecutive_days != 1:
            consecutive_days = 0

        # 如果连续学习天数大于等于4并小于等于7,每天能力增长为前一天的1%
        if 7 >= consecutive_days >= 4:
            ability *= 1.01
        # 如果连续学习天数小于等于3,能力值不变
        else:
            pass

    print("固定每{}天休息1次,365天后的能力值为:{:.2f}".format(n, ability))


if __name__ == '__main__':
    rest_day_interval(10)
    rest_day_interval(15)
3.4 回文数判断

代码一:

# 定义一个函数,用于判断一个字符串是否是回文字符串
def is_palindrome(string):
    # 判断字符串是否和其反向拷贝相等,如果相等,则说明字符串是回文字符串,返回 True;否则返回 False
    return string == string[::-1]


# 获取用户输入的字符串
string = input("请输入一个字符串:")

# 调用函数判断字符串是否是回文字符串
palindrome = is_palindrome(string)

# 根据判断结果输出相应的信息
if palindrome:
    print(string, "是一个回文树!")
else:
    print(string, "不是一个回文数!")

代码二:

def is_palindrome(n):
    # 将输入的数转换为字符串
    s = str(n)
    # 判断字符串的前半部分是否等于后半部分反转后的结果
    return s[:2] == s[-1:-3:-1]


if __name__ == '__main__':
    num = int(input("请输入一个5位数:"))
    if is_palindrome(num):
        print("{}是回文数".format(num))
    else:
        print("{}不是回文数".format(num))
3.5 田字格输出
for i in range(11):
    if i == 0 or i == 10:
        print("+" + "+".center(9, "-") + "+")
    elif i % 5 == 0:
        print("+" + "+".center(9, "-") + "+")
    else:
        print("|" + "|".center(9) + "|")

3.6 文本进度条
import time

def progress_bar():
    print("Starting ... ", end="", flush=True)  # 打印起始文本,不换行
    for i in range(10):  # 模拟进度
        print("=", end="", flush=True)  # 打印进度条,不换行
        time.sleep(0.5)  # 暂停一段时间,模拟程序执行
    print(" Done!")  # 打印结束文本

progress_bar()
3.7 文本风格(省略)
3.8 安装第三方库(省略)

注:上述代码仅供参考,若有问题可在评论区留言!

你可能感兴趣的:(python)