python 头歌pow函数详解

img


为什么输入0.75和0的时候没有输出1.0呢😥 把第五行的0.0改成0也不行,不太懂自己哪里写错了,谢谢热心解答的大家

数据类型不对,你已经转为 int 和 float 了,而在函数中,你用的是字符串比较

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/754331
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:利用Python解决掉谷歌人机验证,全自动识别真的牛啊
  • 除此之外, 这篇博客: 湖南大学python头歌实训-简单计算中的 第4关:※解决实际问题※ 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 任务描述
    本关主题是综合利用前三关掌握的知识,解决实际问题。这些问题来源于实际生活的各个方面,通过问题的解决,希望对计算思维有一定的体验和感悟。

    本关任务:完成编程要求的相关题目。

    相关知识
    数据类型
    对象是Python程序操作的核心,每个对象都有一个类型,它规定了程序可以对该类型对象进行哪些操作。类型分为标量的和非标量的。标量对象是不可分割的单个对象。非标量对象——例如字符串(String)——通常不是单个的整体,而是有可分解的内部结构的。

    Python有4种类型的标量对象:

    int对象用来表示整数。int类型的对象可通过字面直接看出,如3、9001或-72等。

    float对象用于表示实数。float类型的对象也可通过字面很容易地看出来,如23.0、9.48或-72.28。也可用科学计数法表示float类型的对象,例如,3.9E3代表3.9×10
    3
    ,等同于3900。

    bool是用来表示布尔值,即“真”或“假”,在Python中分别用常量True和False表示。

    None对象表示空值。

    对象和运算符可以构成表达式,表达式运算后会得到一个值,称为表达式的值,这个值就是具有某种类型的一个对象。例如,表达式7+2表示int类型的对象9,而表达式7.0+2.0表示float类型的对象9.0。Python中==运算符用于比较两个表达式的值是否相等,而!=运算符用于比较两个表达式的值是否不相等。

    算术运算符
    int和float类型的运算符及其说明如下所示:

    i+j:表示对象i和j的和。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

    i-j:表示对象i与j的差。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

    i*j:表示对象i与j的乘积。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

    i//j:表示整数除法。例如8//2的值为int类型4,9//4的值为int类型2。即整数除法只取整数商,去掉小数部分。

    i/j:表示对象i除以对象j,无论i和j的类型是int还是float,结果都为float,如10/4结果为2.5。

    i%j:表示int对象i除以int对象j的余数,即数学的“模”运算。

    i**j:表示对象i的j次方。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

    比较运算符>(大于)、>=(大于等于)、<(小于)和<=(小于等于)的含义与其在数学上的含义一样。

    算术运算符通常有优先级。例如,表达式x+y*2的计算过程是先算y乘以2,然后将结果与x相加。计算的顺序可以使用括号来改变,例如,(x+y)*2表示先计算x加y,然后将结果乘以2。

    bool类型上的运算有:

    a and b:与(and)运算,如果bool类型对象a和b都为True,结果为True,否则结果为False。

    a or b:或(or)运算,如果bool类型对象a和b至少有一个为True,结果为True,否则结果为False。

    not a:非(not)运算,如果bool类型对象a为True,结果为False;如果为False,结果为True。

    )
    N

    =
    1200
    r

    ,N’=N*12)。

    第四题
    请在指定位置编写程序,将日期作为输入并打印该日期是一周当中的周几。用户输入有三个:m(月)、d(日)、y(年)。对于m,用1表示一月,2表示二月,以此类推。对于输出,0表示周日,1表示周一,2表示周二,以此类推。

    对于阳历,如果给定m,d,y,则计算步骤大致如下(注意其中的除法是整数除法,详见下面的相关知识):

    y
    0

    =y−(14−m)/12
    x=y
    0

    +
    4
    y
    0



    100
    y
    0


    +
    400
    y
    0

    m
    0

    =m+12(
    12
    (14−m)

    )−2
    d
    0

    =(d+x+
    12
    31∗m
    0


    )%7

    例如:2000年2月14日是周几?
    y
    0

    =2000−1=1999
    x=1999+1999/4−1999/100+1999/400=2483
    m
    0

    =2+12∗1−2=12
    d
    0

    =(14+2483+(31∗12)/12)%7=2500%7=1
    答案:周一

    第五题
    编写一个计算并打印地球上两点的大圆弧距离的Python程序。该程序接收用户的4个输入x
    1

    ,y
    1

    ,x
    2

    ,y
    2

    (分别表示地球上两个点的维度和经度,单位是度)。大圆弧距离计算公式为(单位是英里):

    d=R∗arccos(sin(x
    1

    )∗sin(x
    2

    )+cos(x
    1

    )∗cos(x
    2

    )∗cos(y
    1

    −y
    2

    ))

    其中R=69.1105英里,1英里=1.609公里。请在指定位置编写程序,所给坐标之间的大圆弧距离,单位是公里。(注意,sin、cos函数输入是弧度值,而程序中给的是角度值,需要转换。arccos结果是弧度值,需要转化成角度值)。

    第六题
    根据给定的温度t(华氏温度)和风速v,可以计算出风寒指数,公式如下:

    w =35.74+0.6215 t +(0.4275 t −35.75) v
    0.16

    请在指定位置编写程序,根据所给的温度和风速,计算风寒指数。

    测试说明
    右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python代码即可。

    请不要直接print最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。

    import math
    
    def print_(x):
        if type(x) == float:
            print("%.4f" % x)
        else:
            print(x)
    # ********** Begin ********** #
    #第一题
    for (vin, rin, rout) in [(10, 10, 5), (10, 10, 10), (20, 20, 5), (20, 20, 10)]:
        #请在下面编写代码
        vout=vin*(rin/rout)**2#注意乘号
        #请不要修改下面的代码
        print_(vout)
    
    print('\n***********************\n')
    
    #第二题
    for (d, p, S) in [(7,300,10000),(7,400,15000),(10,400,12000),(15,400,12000)]:
        # 请在下面编写代码
        r=(d*p/(math.pi*S))**(1/3)#如何转换三次方
        # 请不要修改下面的代码
        print_(r)
    
    print('\n***********************\n')
    
    #第三题
    for (P, N, r) in [(300000,10,6.5), (300000,20,6.5),(300000,30,6.5)]:
        # 请在下面编写代码
        r1=r/1200
        N1=N*12
        payPerMonth=(P*r1*(1+r1)**N1)/((1+r1)**N1-1)
        # 请不要修改下面的代码
        print_(payPerMonth)
    
    
    print('\n***********************\n')
    
    #第四题
    
    for (m,d,y) in [(1,1,2017), (2,14,2017), (5,1,2017), (6,1,2017),(7,1,2017),(12,25,2017)]:
        # 请在下面编写代码
        y0=y-(14-m)//12
        x=y0+y0//3-y0//100+y0//400
        m0=m+12*((14-m)//12)-2
        d0=(d+x+31*m0//12)%7
        # 请不要修改下面的代码
        print_(d0)
    
    
    print('\n***********************\n')
    
    #第五题
    
    for (x1,y1,x2,y2) in [(48.87,-2.33,37.8,-122.4),(40.89,116.50,37.8,-122.4),(40.89,116.50,48.87,-2.33)]:
        # 请在下面编写代码
        
        #sin(x弧度)
        #x/180*math.pi
        #s1=math.sin(x1/180*math.pi)
        #s2=math.sin(x2/180*math.pi)
        R=69.1105*1.609
        #c1=math.cos(x1/180*math.pi)
        #c2=math.cos(x2/180*math.pi)
        #c12=math.cos((y1-y2)/180*math.pi)
        x1=x1*math.pi/180
        x2=x2*math.pi/180
        y1=y1*math.pi/180
        y2=y2*math.pi/180
        dist=R*math.acos(math.sin(x1)*math.sin(x2)+math.cos(x1)*math.cos(x2)*math.cos(y1-y2))
        dist=dist*180/math.pi
    
        # 请不要修改下面的代码
        print_(dist)
    
    print('\n***********************\n')
    
    #第六题
    
    for (t, v) in [(32,10), (32, 100), (40, 10), (40, 100)]:
        # 请在下面编写代码
        w=35.74+0.6215*t+(0.4275*t-35.75)*(v**0.16)#hh又忘了乘号
        # 请不要修改下面的代码
        print_(w)
    # ********** End ********** #