美文网首页试读
Python Turtle绘制无限小数位的图形

Python Turtle绘制无限小数位的图形

作者: 火卫控 | 来源:发表于2021-10-22 10:56 被阅读0次

有些无限位分数,用Python Turtle来绘制无限小数位的图形,很好看

计算1/13,并画图

1/13, fd=20, s=400

设计思路

1. 在python中引入大数Decimal,解决小数位数问题

2. 计算所需分数,转化为字符串并提取小数位

3. 在Turtle绘图中循环提取单小数位作为右偏方向

4. 以固定步长绘图,调整循环次数(即小数位),得到图形

注: 由于每单个位数字为0-9,即将360度分为10份,但是分数位可能为0,则可将单个位数字加1再除。

源代码如下:


import turtle as tu

# 小数位超长,引入大数,设置小数位
import decimal
from decimal import Decimal
decimal.getcontext().prec = 100

# 需要计算的分数
c = Decimal(1)/Decimal(7)

# 转化为字符串
str_c =  str(c)

# 去掉各位和小数点
str_c = str_c[2:]

# 打印预览,控制台输出
print(str_c)

#  turtle.setup(width=0.5, height=0.75, startx=None, starty=None),
# 参数:width, height: 输入宽和高为整数时, 表示像素; 
# 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 
# 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
tu.setup(950,650,200,200)

# 设置画笔速度
tu.speed(0)

for i in range(len(str_c)):
    # 循环依次读取小数点后的小数,加1再让360度除,防止分母为0
    tu.right(360/(int(str_c[i-1])+1)) 
    # 每次步长
    tu.fd(20)
    
# 暂停程序,停止画笔绘制,但绘图窗体不关闭    
tu.done()

计算1/7,并画图

画布改为:tu.setup(550,450,200,200)


1/7, fd=50, s=100

计算1/17,并画图

1/17, fd=50, s=500

其小数位

058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882

计算1/21,并画图

1/21, fd=10, s=500

1/21小数位(500位)如下:

047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619048
1/1279, fd=10, s=5000

1/1279小数位(500位)如下:

00078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053166536356528537920250195465207193119624706802189210320562939796716184519155590304925723221266614542611415168100078186082877247849882720875684128225175918686473807662236121970289288506645817044566067240031274433150899139953088350273651290070367474589523064894448788115715402658326817826426896012509773260359655981235340109460516028146989835809225957779515246286161063330727130570758405003909304143862392494136043784206411258795934323690383111806098514464425332290852228303362001563721657544956997654417513682564503518373729476153244722439405785770132916340891321344800625488663017982799061767005473025801407349491790461297888975762314308053

1/2203小数位(500位)如下:
···
00045392646391284611892873354516568315932818883340898774398547435315478892419428052655469813890149795733091239219246482069904675442578302315024965955515206536541080344984112573763050385837494325919201089423513390830685428960508397639582387653200181570585565138447571493418066273263731275533363595097594189741261915569677712210621879255560599182932364956876985928279618701770313209260099863822060826146164321379936450295052201543349977303676804357694053563322741715842033590558329550612800726282342260553790285973672265093054925102133454380390376758965047662278710848842487517022242396731729459827507943713118474807081252837040399455288243304584657285519745801180208806173399909214707217430776214253290966863368134362233318202451202905129369042215161143894689060372219700408533817521561507035860190649114843395369950068088969586926917839310031774852473899228325011348161597821152973218338629142078983204720835224693599636858828869723104857013163867453472537448933272809804811620517476168860644575578756241488878801634135270086246028143440762596459373581479800272355878347707671357240127099409895596913300045392646391284611892873354516568315932818883340898774398547435315478892419428052655469813890149795733091239219246482069904675442578302315024965955515206536541080344984112573763050385837494325919201089423513390830685428960508397639582387653200181570585565138447571493418066273263731275533363595097594189741261915569677712210621879255560599182932364956876985928279618701770313209260099863822060826146164321379936450295052201543349977303676804357694053563322741715842033590558329550612800726282342260553790285973672265093054925102133454380390376758965047662278710848842487517022242396731729459827507943713118474807081252837040399455288243304584657285519745801180208806173399909214707217430776214253290966863368134362233318202451202905129369042215161143894689060372219700408533817521561507035860190649114843395369950068088969586926917839310031774852473899228325011348161597821152973218338629142078983204720835224693599636858828869723104857013163867453472537448933272809804811620517476168860644575578756241488878801634135270086246028143440762596459373581479800272355878347707671357240127099409895596913300045392646391284611892873354516568315932818883340898774398547435315478892419428052655469813890149795733091239219246482069904675442578302315024965955515206536541080344984112573763050385837494325919201089423513390830685428960508397639582387653200181570585565138447571493418066273263731275533363595097594189741261915569677712210621879255560599182932364956876985928279618701770313209260099863822060826146164321379936450295052201543349977303676804357694053563322741715842033590558329550612800726282342260553790285973672265093054925102133454380390376758965047662278710848842487517022242396731729459827507943713118474807081252837040399455288243304584657285519745801180208806173399909214707217430776214253290966863368134362233318202451202905129369042215161143894689060372219700408533817521561507035860190649114843395369950068088969586926917839310031774852473899228325011348161597821152973218338629142078983204720835224693599636858828869723104857013163867453472537448933272809804811620517476168860644575578756241488878801634135270086246028143440762596459373581479800272355878347707671357240127099409895596913300045392646391284611892873354516568315932818883340898774398547435315478892419428052655469813890149795733091239219246482069904675442578302315024965955515206536541080344984112573763050385837494325919201089423513390830685428960508397639582387653200181570585565138447571493418066273263731275533363595097594189741261915569677712210621879255560599182932364956876985928279618701770313209260099863822060826146164321379936450295052201543349977303676804357694053563322741715842033590558329550612800726282342260553790285973672265093054925102133454380390376758965047662278710848842487517022242396731729459827507943713118474807081252837040399455288243304584657285519745801180208806173399909214707217430776214253290966863368134362233318202451202905129369042215161143894689060372219700408533817521561507035860190649114843395369950068088969586926917839310031774852473899228325011348161597821152973218338629142078983204720835224693599636858828869723104857013163867453472537448933272809804811620517476168860644575578756241488878801634135270086246028143440762596459373581479800272355878347707671357240127099409895596913300045392646391284611892873354516568315932818883340898774398547435315478892419428052655469813890149795733091239219246482069904675442578302315024965955515206536541080344984112573763050385837494325919201089423513390830685428960508397639582387653200181570585565138447571493418066273263731275533363595097594189741261915569677712210621879255560599182932364956876985928279618701770313209260099863822060826146164321379936450295052201543349977303676804357694053563322741715842033590558329550612800726282342260553790285973672265093054925102133454380390376758965047662278710848842487517022242396731729459827508
···

相关文章

网友评论

    本文标题:Python Turtle绘制无限小数位的图形

    本文链接:https://www.haomeiwen.com/subject/akucaltx.html