从下面的代码中可以看出,我对python非常陌生。我毫不怀疑这个问题已经在这个网站的某个地方得到了回答,但我找不到它
我有一个求解k4的方程,它有三个变量(cr,q和qmax(。qmax是一个常数,我希望设置为11.2。
在代码中,我单独定义了每个变量的值,以求解一个特定的k4值。
import math
cr = 1
q = 3.8
qmax = 11.2
k4 = cr * ((-math.log(1 - ((q / qmax) ** (1 / 3)))) +
(0.5 * math.log(1 + ((q / qmax) ** (1 / 3)) + ((q / qmax) ** (2 / 3)))) +
(math.sqrt(3) * math.atan(((math.sqrt(3)) * ((q / qmax) ** (1 / 3))) / (2 + ((q / qmax) ** (1 / 3))))))
print(k4)
我想做的是让python为每个变量输入一个值列表,并打印出答案。现在,代码仅限于手动键入每个变量,然后只打印出一个k4值。
我的列表是这样的:(它不是代码,但我格式化了它,所以它看起来像一个表(
cr q
1 3.8
3 0.5
7 0.1
10 0.01
谢谢你的帮助!
您可以迭代每对cr
和q
值:
import math
q_max = 11.2
value_pairs = [(1, 3.8), (3, 0.5), (7, 0.1), (10, 0.01)]
for cr, q in value_pairs:
k4 = cr * ((-math.log(1 - ((q / qmax) ** (1 / 3)))) +
(0.5 * math.log(1 + ((q / qmax) ** (1 / 3)) + ((q / qmax) ** (2 / 3)))) +
(math.sqrt(3) * math.atan(((math.sqrt(3)) * ((q / qmax) ** (1 / 3))) / (2 + ((q / qmax) ** (1 / 3))))))
print(k4)
将计算定义为函数将对您有所帮助。尝试:
import math
def calcu(*args):
print('cr q qmax k4')
for i in args:
cr,q,qmax = i[0],i[1],i[2]
k4 = cr * ((-math.log(1 - ((q / qmax) ** (1 / 3)))) +(0.5 * math.log(1 + ((q / qmax) ** (1 / 3)) + ((q / qmax) ** (2 / 3)))) +(math.sqrt(3) * math.atan(((math.sqrt(3)) * ((q / qmax) ** (1 / 3))) / (2 + ((q / qmax) ** (1 / 3))))))
print(cr , q , qmax,k4)
现在将您的值列为列表,如:
calcu([1,2,3],[2,3,4])
现在,如果您已修复qmax
:
import math
qmax = 'some number'
def calcu(*args):
print('cr q k4')
for i in args:
cr,q = i[0],i[1]
k4 = cr * ((-math.log(1 - ((q / qmax) ** (1 / 3)))) +(0.5 * math.log(1 + ((q / qmax) ** (1 / 3)) + ((q / qmax) ** (2 / 3)))) +(math.sqrt(3) * math.atan(((math.sqrt(3)) * ((q / qmax) ** (1 / 3))) / (2 + ((q / qmax) ** (1 / 3))))))
print(cr , q ,k4)
现在称之为:
calcu([1,2],[2,3])