Lijingyang 发表于 2022-5-2 17:49:26

这种情况涉及到度数的相减它老是会出现这种错误应该怎么解决

涉及到度数相减,有时候度数会有小数,它就会报错,要怎么解决

python爱好者. 发表于 2022-5-2 17:53:03

i1 =90 - int(a)
是因为字符串不能与数字相减,只有相同类型才可以进行某些操作!

isdkz 发表于 2022-5-2 17:54:08

input 得到的是字符串,你还要用 float 转成小数

n = float(input())
a = float(input())
q = float(input())

Lijingyang 发表于 2022-5-2 18:04:20

isdkz 发表于 2022-5-2 17:54
input 得到的是字符串,你还要用 float 转成小数

n = float(input())


import numpy as np
from math import sin
n = float(input("请输入(1,2)的随机一个数:"))
a = float(input("请输入太阳高度角:"))
q = float(input("请输入镜面倾斜角: "))
b = 1
while b == 1:
    i5 =a*sin(n*sin(2*q - a*sin(sin(a/n))))
    n += n + 0.0001
    i5_1 = a*sin(n*sin(2*q - a*sin(sin(a/n))))
    I = i5 - i5_1
    if -0.0001 < I <0.0001:
      print(n)
      break
    else:
      while I > 0.001:
            n += 0.001
      while I < 0.001:
            n -= 0.001
我修改之后只有输进去的数字,没有输出来的结果,这怎么回事

isdkz 发表于 2022-5-2 18:28:47

Lijingyang 发表于 2022-5-2 18:04
import numpy as np
from math import sin
n = float(input("请输入(1,2)的随机一个数:"))


这里会导致死循环,

      while I > 0.001:
            n += 0.001
      while I < 0.001:
            n -= 0.001

Lijingyang 发表于 2022-5-2 18:40:02

isdkz 发表于 2022-5-2 18:28
这里会导致死循环,

      while I > 0.001:


那要怎么解决一个很简单的代码干了3个小时,唉

isdkz 发表于 2022-5-2 18:41:12

Lijingyang 发表于 2022-5-2 18:40
那要怎么解决一个很简单的代码干了3个小时,唉

我实在是不知道你想干什么{:10_277:}

有题目吗?

Lijingyang 发表于 2022-5-2 18:41:43

Lijingyang 发表于 2022-5-2 18:40
那要怎么解决一个很简单的代码干了3个小时,唉

可是我把后面的循环删除之后,打印I,它也不会打印出来

Lijingyang 发表于 2022-5-2 19:02:10

isdkz 发表于 2022-5-2 18:41
我实在是不知道你想干什么

有题目吗?

2、计算折射率
利用公式(2)无法直接解出折射率n,需要借助计算机进行数值求解,利用插值逼近法在1到2之间找出n的解。
方法1:用C++等程序语言进行编程计算。令公式(2)右边项等于i,即
is=asin(nsin(2φ-asin(1))) (3)
在1到2之间取任意值作为n的初始值,计算Ais=i-i,改变n值让Δi逐步逼近于零。如果Δis>0,就增加n值再计算Δis;如果Δis<0,就减小n值再计算Δis。直到Δis在设定的0附近一定范围内,终止程序,就获得所要的n值。

Lijingyang 发表于 2022-5-2 19:12:48

Lijingyang 发表于 2022-5-2 19:02
2、计算折射率
利用公式(2)无法直接解出折射率n,需要借助计算机进行数值求解,利用插值逼近法在1到2之 ...

这个不太清晰,我重新发一个截图的,求助帖
页: [1]
查看完整版本: 这种情况涉及到度数的相减它老是会出现这种错误应该怎么解决