试题 基础练习 字母图形(Python)

本文讲述了如何使用Python编程实现一个图形问题,即从第二行开始,将第一行的字母按逆序输出,然后正序输出剩余部分。作者通过嵌套循环和定义函数处理了不同行数和列数的情况,并对代码进行了修正以确保正确性。
摘要由CSDN通过智能技术生成

思路来源:

        观察这个图形发现:“从第二行开始将第一行的第n个字母开始逆序输出,加上正序输出剩下的字母”。

写代码的步骤:

        我首先想到的是一行行打印,用了嵌套循环,先打印第一行数据吧,用ASCII码打印顺序字母:ABCDEFGH……,来个for 循环打印,之后套用函数进行逆序拼接.....

        n, m = map(int,input().split())
        #  n为行数 m为列数

         for j in range(n):   #行数

n, m = map(int,input().split())
#  n为行数 m为列数
for j in range(n):#  先遍历行数
    #定义ASCII码初始值
    o = 65
    #检测是否为第一行(0)
    if j == 0:
        for i in range(m):
            print(chr(o + i),end = "")  #第一次i为0循环m次
    else:
    #不是第一行执行以下代码,再写逆序字母的函数

                接下来就是怎么将字母逆序打印了,提供一个函数接口调用:输入需要逆序字母的个数n,打印n个逆序字母。

def reverse(n):
    #  第几行就先加上几再逆序打印
    for i in range(n + 1):
        print(chr(65 + n -i),end = "")

                拼接一下逆序打印的字母

n, m = map(int,input().split())
#  n为行数 m为列数
for j in range(n):#  先遍历行数
    #定义ASCII码初始值
    o = 65
    #检测是否为第一行(0)
    if j == 0:
        for i in range(m):
            print(chr(o + i),end = "")  #第一次i为0循环m次
        print() #换行
    else:
        #不是第一行执行以下代码,再写逆序字母的函数
        reverse(j)
        for k in range(m - j - 1):
            print(chr(66 + k),end="")
        print()

        写到这里发现有一些评测无法通过,原来是因为列数比行数多时会多打印一些内容,这就需要在逆序函数里添加一些判断了

代码修正:

        

#添加一个形参来判断是否退出打印
def reverse(n, count):
    for i in range(n+1):
        print(chr(65 + n - i),end="")
        if count - 1 < i:
            break

最终代码:

n, m = map(int,input().split())
#  n为行数 m为列数

def reverse(n, count):  #函数接口:输入整数,逆序打印
    for i in range(n+1):
        print(chr(65 + n - i),end="")
        if count-1 <= i:
            break

for j in range(n):
    o = 65
    if j == 0:
        for i in range(m):
            print(chr(o + i),end="")        
        print()  #  打印顺序字母图案
    else:
        reverse(j,m)
        for k in range(m - j - 1):
            print(chr(66 + k),end="")
        print()

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值