实验三 循环结构程序设计(Python)

第1关:打印图形

任务描述

本关任务:编写一个能计打印图形的小程序。

输入大写字母,打印一个相关图形

例如,输入E

打印图形如下

相关知识

为了完成本关任务,你需要掌握:1.ord和chr函数,2.如何控制换行。

chr和ord函数

ord函数可以将字符转化为你所需要的码值,chr函数可以码值转化为你所需要的字符。通过这样的转化 你可以方便的完成字符与码值之间的转换操作

ord('A')为65

chr(65)为'A'

chr(ord('A')+1)对应字符'B'

控制换行

python中的print语句默认情况下会换行显示

print(打印的内容,end="")则不换行显示

测试说明

平台会对你编写的代码进行测试:

测试输入:C;

预期输出:

A

ABA

ABCBA

测试输入:G;

预期输出:

开始你的任务吧,祝你成功!

python 复制代码
zm=input("")
#代码开始
for i in range(ord('A'), ord(zm) + 1):     #A到zm的ASCII码
    n = ord(zm) - i
    print(" " * n, end="")
    for j in range(ord('A'), i + 1):     
        print(chr(j), end="")

    for j in range(i - 1, ord('A') - 1, -1):
        print(chr(j), end="")
    print()
#代码结束

第2关:斐波那契数列

任务描述

本关任务:编写一个能计算斐波那契数列中第x个数的小程序。

相关知识

为了完成本关任务,你需要掌握:1.什么是斐波那契数列,2.for循环

什么是斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、

因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列"。

有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,每个月的兔子数形成的数为斐波那契额数列

在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

for循环

在python中,对于for循环,可以设置遍历结构为range函数

for i in range(初值,终值):

<语句块>

i从初值取值到终值-1,每次执行一次循环体

编程要求

根据提示,在右侧编辑器补充代码,输入x,输出第x个斐波那契数列。

注意:斐波那契数列的第一项和第二项为1

测试说明

平台会对你编写的代码进行测试:

测试输入:6

预期输出:

8

测试输入:1;

预期输出:

1

测试输入:10;

预期输出:

55

勿以恶小而为之,勿以善小而不为。

开始你的任务吧,祝你成功!

python 复制代码
def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    
    a, b = 0, 1
    for _ in range(2, n + 1):
        a, b = b, a + b
    return b

n = (int)(input())
print(fibonacci(n))

第3关:投资年限计算

任务描述

本关任务:编写一个计算投资年限的小程序

某客户每年年初在银行存入一笔固定金额的钱m,在年底,将本金和利息取出.在第二年年初,将该笔钱与新存入的钱m一起,再存入银行。输入每年存款m、年利率r,再输入用户要得到的金额x,计算该客户需要存放多少年y才能得到需要的金额。

例如,输入存款10000,年利率0.1,金额100000,输出7

输入存款50000,年利率0.05,金额500000,输出8。

开始你的任务吧,祝你成功!

python 复制代码
m=eval(input("存款"))
r=eval(input("年利率"))
x=eval(input("金额"))
#代码开始
n = 0
s = 0
while(s < x):
    s += m
    s *= (1 + r)
    n += 1
#代码结束
print(n)

第4关:销售统计

任务描述

本关任务:循环输入商品编号、数量和价格,进行累加。

只到输入商品编号为0000为止。

输出商品种类、数量总计和金额总计。

测试说明

平台会对你编写的代码进行测试:

测试输入

输入商品代码0101

输入商品价格5

输入商品数量2

输入商品代码0103

输入商品价格10

输入商品数量5

输入商品代码9999

输入商品价格2

输入商品数量1

输入商品代码0000

预期输出

商品种类3数量总计8金额总计62.00

开始你的任务吧,祝你成功!

python 复制代码
sid = ""
total = 0
stype = 0
arr = [0]
n = 0
i = 0;

def fun(sid):
    global stype, arr
    if sid not in arr:
        stype += 1
        arr.append(sid)

while 1:
    sid = input("输入商品代码")

    if sid == "0000":
        break;

    price = float(input("输入商品价格"))
    num = int(input("输入商品数量"))
    n += num
    total += price * num

    fun(sid)

print(f"商品种类{stype}数量总计{n}金额总计{total:.2f}")

第5关:显示输入数字之内的完全数

任务描述

本关任务:显示输入数字之内的完全数。

一个数整等于其所有因子之和(不含这个数本身),则称这个数为完全数。例如 6=1+2+3,所以 6 是完全数。

编程要求

根据提示,在右侧编辑器补充代码,显示输入数字之内的完全数。

测试用例

测试输入1000

预期输出

6

28

496

把语言化为行动,比把行动化为语言困难得多。

开始你的任务吧,祝你成功!

python 复制代码
x = int(input())

for i in range(1, x + 1):
    total = 0
    for j in range (1, i):
        if i % j == 0:
            temp = j
            total += temp
    if total == i:
        print(i)

第6关:输出九九乘法表

任务描述

本关任务:利用小程序输出九九乘法表。

为了完成本关任务,你需要掌握:Python的循环结构。

for 循环

for循环在Python中是一个通用的迭代器,可以遍历任何有序的序列对象内的元素。for语句可用于字符串、列表、元组、文件等可迭代对象。for循环格式如下:

for <循环变量> in <遍历结构>:

<语句块1>

else:

<语句块2>

在for循环,内置函数range()产生序列,可以来控制循环结构。

range(start, stop, [step])

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5)

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

编程要求

要求利用for循环输出九九乘法表,通过双层for循环进行控制,然后按照相应的格式输出九九乘法表。

注意换行的处理。

测试说明

我会对你编写的代码进行测试:

样例输出:

开始你的任务吧,祝你成功!

python 复制代码
for i in range (1, 10):
    for j in range (1, i + 1):
        print(f"{i} * {j} = {i*j}", end="")
        print(" ", end="")
    print()

第7关:鸡兔同笼问题

任务描述

本关任务:鸡和兔子关在一个笼子里,输入头的个数和脚的个数,求笼内关了多少只兔子和多少只鸡?

如果没有符合条件的数目,显示无解

测试说明

平台会对你编写的代码进行测试:

测试输入:36

100

预期输出:

鸡22只兔子14只

测试输入:20

40

预期输出:

无解

如果不想在世界上虚度一生,那就要学习一辈子。

开始你的任务吧,祝你成功!

python 复制代码
head = int(input())
foot = int(input())

for ji in range(1, head+1):
    tu = head - ji
    if ji * 2 + tu * 4 == foot:
        print(f"鸡{ji}只兔子{tu}只")
        break

if ji * 2 + tu * 4 != foot:
    print("无解")

第8关:剩余最短木料

任务描述

本关任务:求剩余最短木料的切割方案。

输入一根材料的长度,需要截成长度为19米和23米的短料。求两种短料各截多少根时,剩余的材料最少?(每种短料必须大于等于一根)

测试说明

平台会对你编写的代码进行测试:

测试输入:100

预期输出:

19米4段,23米1段,剩余1米

测试输入:133

预期输出:

19米2段,23米4段,剩余3米

注意:木料的长度需大于等于42

开始你的任务吧,祝你成功!

python 复制代码
L = int(input())
    
best_L = -1
best_x = 0
best_y = 0
    
x_max = (L - 23) // 19
    
for x in range(1, x_max + 1):
    remainder = L - 19 * x
    if remainder >= 23:
        y_max = remainder // 23
        s = 19 * x + 23 * y_max
        if s > best_L:
            best_L = s
            best_x = x
            best_y = y_max
    
mini = L - best_L
    

print(f"19米{best_x}段,23米{best_y}段,剩余{mini}米")
相关推荐
Gofarlic_oms14 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
invicinble5 小时前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
m0_674294646 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
倔强的石头1067 小时前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
运气好好的7 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
冰暮流星8 小时前
javascript事件案例-全选框案例
服务器·前端·javascript
2401_871492858 小时前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python
南子北游8 小时前
Python学习(基础语法1)
开发语言·python·学习
步辞8 小时前
Redis如何利用LFU算法优化缓存命中率
jvm·数据库·python
forEverPlume9 小时前
golang如何实现日志按级别过滤_golang日志按级别过滤实现教程
jvm·数据库·python