wp231957 发表于 2022-2-22 09:13:14

这个c代码 转python 执行结果不正确

先看c 代码的代码及执行效果图:

wp231957 发表于 2022-2-22 09:14:39

本帖最后由 wp231957 于 2022-2-22 09:16 编辑

看一下python代码   y=1.5
x=-1.5
while y>-1.5:
   while x<1.5:
         a=x**2+y**2-1
         print("*",end="") if a**3-(x**2)*(y**3)<=0 else print(" ",end="")
         x+=0.05
   y-=0.1
   print()
   
   

这个代码运行啥结果也没有就是一大堆的空白行
不知道哪里转译错误呢

isdkz 发表于 2022-2-22 09:50:35

本帖最后由 isdkz 于 2022-2-22 09:53 编辑

两个问题:

第一个问题:python浮点数运算会溢出,所以最好用Decimal

第二个问题:内层for循环在外层for循环每一次循环的时候 x 会初始化为 -1.5,
                     所以你要用while循环的话,把 x 的赋值放到外层 while 循环里面

故对你的代码修改如下:
from decimal import Decimal

y=Decimal('1.5')

while y>-1.5:
   x=Decimal('-1.5')
   while x<1.5:
         a=x**2+y**2-1
         print("*",end="") if a**3-(x**2)*(y**3)<=0 else print(" ",end="")
         x+=Decimal('0.05')
   y-=Decimal('0.1')
   print()

wp231957 发表于 2022-2-22 10:04:37

isdkz 发表于 2022-2-22 09:50
两个问题:

第一个问题:python浮点数运算会溢出,所以最好用Decimal


新手村错误   惭愧

wp231957 发表于 2022-2-22 10:05:14

isdkz 发表于 2022-2-22 09:50
两个问题:

第一个问题:python浮点数运算会溢出,所以最好用Decimal


关键for循环它不支持浮点步长啊

isdkz 发表于 2022-2-22 13:02:52

wp231957 发表于 2022-2-22 10:04
新手村错误   惭愧

有时候不小心犯这种低级错误也正常,

我看代码也没能找出来,我都是每一步 print 一下变量的值才能发现
页: [1]
查看完整版本: 这个c代码 转python 执行结果不正确