Python循环结构程序设计

文章介绍了编程任务,包括使用ord和chr函数打印图形,计算斐波那契数列,投资年限计算,销售统计,以及解决数学问题如完全数和鸡兔同笼问题,最后涉及木料切割的最优化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第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=“”)则不换行显示

测试说明

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

测试输入:G; 预期输出:  打印图形2

zm=input("")
#代码开始
for i in range(ord(zm)-ord('A')+1):
    print(' '*((ord(zm)-ord('A')-i)),end='')
    for j in range(i+1):
        print(chr(ord('A')+j),end='')
    for j in range(i-1,-1,-1):
        print(chr(ord('A')+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

x=eval(input("")) 
#代码开始
f=[0 for _ in range(100)]
f[1]=1
f[2]=1
for i in range(3,x+1):
    f[i]=f[i-1]+f[i-2]
print(f[x])
#代码结束

第3关:投资年限计算

任务描述

本关任务:编写一个计算投资年限的小程序 某客户每年年初在银行存入一笔固定金额的钱m,在年底,将本金和利息取出.在第二年年初,将该笔钱与新存入的钱m一起,再存入银行。输入每年存款m、年利率r,再输入用户要得到的金额x,计算该客户需要存放多少年y才能得到需要的金额。 例如,输入存款10000,年利率0.1,金额100000,输出7 输入存款50000,年利率0.05,金额500000,输出8。

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

第4关:销售统计

任务描述

本关任务:循环输入商品编号、数量和价格,进行累加。 只到输入商品编号为0000为止。 输出商品种类、数量总计和金额总计。

测试说明

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

测试输入 输入商品代码0101 输入商品价格5 输入商品数量2 输入商品代码0103 输入商品价格10 输入商品数量5 输入商品代码9999 输入商品价格2 输入商品数量1 输入商品代码0000 预期输出 商品种类3数量总计8金额总计62.00

#代码开始
c, su, sl = 0, 0, 0
while(input("输入商品代码") != '0000'):
    j = eval(input("输入商品价格"))
    s = eval(input("输入商品数量"))
    c += 1
    h = s*j
    su += h
    sl += s
#代码结束
print("商品种类{}数量总计{}金额总计{:.2f}".format(c, sl, su))

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

任务描述

本关任务:显示输入数字之内的完全数。 一个数整等于其所有因子之和(不含这个数本身),则称这个数为完全数。例如 6=1+2+3,所以 6 是完全数。

编程要求

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

测试用例 测试输入1000 预期输出 6 28 496

x=eval(input())
#代码开始
for i in range(1,x+1):
    sums=0
    for j in range(1,i):
        if i%j==0:
            sums+=j
    if sums==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循环进行控制,然后按照相应的格式输出九九乘法表。

  • 注意换行的处理。
测试说明

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

样例输出:

img

# -*- coding:utf-8 -*-
for i in range(1,10):
    for j in range(i):
		#********* Begin *********#
      if j!=i-1:
        print("{} * {} = {}".format(i,j+1,(j+1)*i),end=" ")
      else:
        print("{} * {} = {}".format(i,j+1,(j+1)*i),end="")
			# 在此处补全代码
		#********* End *********#
    if i != 9:
        print()

第7关:鸡兔同笼问题

任务描述

本关任务:鸡和兔子关在一个笼子里,输入头的个数和脚的个数,求笼内关了多少只兔子和多少只鸡? 如果没有符合条件的数目,显示无解

测试说明

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

测试输入:36 100 预期输出: 鸡22只兔子14只

测试输入:20 40 预期输出: 无解

t=eval(input())
j=eval(input())
#代码开始
if j%2!=0 or j/2<t:
    print("无解")
    exit(1)
tuzi=j//2-t
ji=t-tuzi
print(f"鸡{ji}只兔子{tuzi}只")
#代码结束

第8关:剩余最短木料

任务描述

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

测试说明

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

测试输入:100 预期输出: 19米4段,23米1段,剩余1米

测试输入:133 预期输出: 19米2段,23米4段,剩余3米 注意:木料的长度需大于等于42

s=eval(input())
if s>=42:
    x1,x2= (s-42)//23,(s-42)%23
    if x2+x1*4<19:
        n1 = 1,
        n2 = x1+1
        zx = x2
    elif x2>=19:
        n1 = 2
        n2 = x1+1
        zx = x2-19
    else:
        for i in range(1,x1+1):
            if x2+4*i>=19:
                n1 = i+2
                n2 = x1-i+1
                zx = (x2+4*i)%19
                break
else:
    print("木材不符合")
print("19米{}段,23米{}段,剩余{}米".format(n1,n2,zx))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值