用初中代数结合python画出正方形

本文介绍了一种使用初中代数原理在屏幕上打印图形的方法。通过将打印空间抽象为坐标轴,利用x、y坐标的关系,可以轻松绘制出正方形、等腰三角形等图形。这种方法不仅简化了编程过程,还增加了解决问题的乐趣。

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

在屏幕上打印类似下面的图形:

常规画正方形的算法:

  这几乎是初学所有计算机语言时都会遇到的问题。算法都大致类似,就是找出打印规律然后用计算机语句表达出来。最常规的算法是:输入数字n就打印n行,首行和尾行打印n个*号,其它行中打印收尾*号,其他位置打印空格。实现如下:

s=int(input("num:"))
for i in range(s):  #Count.Record how many times you enter.
    if i == 0 or i == s-1:  #If i is 0 or you enter minus 1,print '*' in all line and without wrap
        for i in range(s):
            print('*',end='')
        print('')
    else:
        print('*',end='')   #先打印第一个*
        for i in range(s-2):    #循环打印空格
            print(' ',end='')
        print('*')  #打印最后的*

用初中代数的算法来解决:

  初中代数课时老师在黑板上画的最多的就是横纵坐标轴了,横轴通常表示为x轴,纵轴通常表示为y轴,如下图:

  而在这个问题中屏幕打印空间也可以抽象为一个坐标轴,因为打印顺序是从上往下,从左自右的,所以在这个打印空间中的坐标轴将与代数中的坐标轴有所翻转:

 

  根据这个方法并给出范围我们就能很容易的画出一条x=y的直线:

s=int(input("num:"))
for y in range(s):  #Count.Record how many times you enter.
    for x in range(s): #x,y相当于是定义打印空间
        if y==x: #满足此条件的时打印*号
            print("*",end='')
        else:
            print(" ",end='')
    print()

  执行结果:

 

  这样,一条斜线就打印出来了,下面思考:正方形其实就是由四条直线围成的,分别是:x=n、y=n、x=0、y=0:

 

  将这些条件写入if语句:

s=int(input("num:"))
for y in range(s):  #Count.Record how many times you enter.
    for x in range(s):
        if y==0 or x==0 or y==s-1 or x==s-1: #类似于在二维坐标轴上用4条直线绘制出正方形
            print("*",end='')
        else:
            print(" ",end='')
    print()

  执行结果:

 

  用代数的算法还能画出很多图形,如等腰三角形:

s=int(input("num:"))
for y in range(s):
    for x in range(s):
        if y==2*x-s+1 or y==-2*x+s-1 or y==s-1:
            print("*",end='')
        else:
            print(" ",end="")
    print()

  执行结果:

 

  还可以通过坐标轴直线的平移、翻转等定律绘制出更多的图形。用数学的方式来解决算法问题会让问题变得更简单有趣。

转载于:https://www.cnblogs.com/readygood/p/10196266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值