设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 32127|回复: 27
打印 上一主题 下一主题

【Python 第53课】 数学运算

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
#
发表于 2013-9-4 13:33:55 |只看该作者 |正序浏览
今天从打飞机游戏里中断一下,说些python的基础。

在用计算机编程解决问题的过程中,数学运算是很常用的。python自带了一些基本的数学运算方法,这节课给大家介绍一二。

python的数学运算模块叫做math,再用之前,你需要
import math

math包里有两个常量:
math.pi
圆周率π:3.141592...

math.e
自然常数:2.718281...

数值运算:
math.ceil(x)
对x向上取整,比如x=1.2,返回2

math.floor(x)
对x向下取整,比如x=1.2,返回1

math.pow(x,y)
指数运算,得到x的y次方

math.log(x)
对数,默认基底为e。可以使用第二个参数,来改变对数的基底。比如math.log(100, 10)

math.sqrt(x)
平方根

math.fabs(x)
绝对值

三角函数:
math.sin(x)
math.cos(x)
math.tan(x)
math.asin(x)
math.acos(x)
math.atan(x)
注意:这里的x是以弧度为单位,所以计算角度的话,需要先换算

角度和弧度互换:
math.degrees(x)
弧度转角度

math.radians(x)
角度转弧度

以上是你平常可能会用到的函数。除此之外,还有一些,这里就不罗列,可以去
http://docs.python.org/2/library/math.html
查看官方的完整文档。

有了这些函数,可以更方便的实现程序中的计算。比如中学时代算了无数次的
(-b±√(b²-4ac))/2a
现在你就可以写一个函数,输入一元二次方程的a、b、c系数,直接给你数值解。好,这题就留作课后作业吧。

以后我还会不定期地介绍python中的模块,例如random(随机数)、re(正则表达式)、time(时间)、urllib2(网络请求)等等。

#==== Crossin的编程教室 ====#
微信ID:crossincode
论坛:http://crossin.me
QQ群:156630350

面向零基础初学者的编程课
每天5分钟,轻松学编程




#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

48

积分

新手上路

Rank: 1

27#
发表于 2018-6-12 10:28:36 |只看该作者
crossin先生 发表于 2018-6-11 21:31
bingo=True,不是bingo==True

啊,明白了!感谢先生每次这么晚还帮忙解答问题!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

26#
发表于 2018-6-11 21:31:11 |只看该作者
suiersoda 发表于 2018-6-11 16:54
这样结束不了这个循环

bingo=True,不是bingo==True
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

48

积分

新手上路

Rank: 1

25#
发表于 2018-6-11 16:54:43 |只看该作者
suiersoda 发表于 2018-6-11 16:51
想让a=0的时候不用重新执行代码,可以直接重新输入,只有这个break能成功,用之前的bingo==False的方法就结 ...
  1. bingo=False
  2. while bingo==False:
  3.     a=int(input("请输入a的值:"))
  4.     b=int(input('请输入b的值:'))
  5.     c=int(input('请输入c的值:'))
  6.     if a == 0:
  7.         print('请重新输入:')
  8.     else:
  9.         bingo==True
  10. print(result(a,b,c))
复制代码
这样结束不了这个循环
回复

使用道具 举报

0

主题

0

好友

48

积分

新手上路

Rank: 1

24#
发表于 2018-6-11 16:51:45 |只看该作者
  1. import math
  2. def result(a,b,c):
  3.     derat=b*b-4*a*c
  4.     if a==0:
  5.         return('a不能为0')
  6.     if derat==0:
  7.         x=-b/2*a
  8.         return x

  9.     elif derat>0:
  10.         x1=(-b+math.sqrt(derat))/2*a
  11.         x2=(-b-math.sqrt(derat))/2*a
  12.         return x1,x2
  13.     else:
  14.         return('无实根')



  15. while True:
  16.     a=int(input("请输入a的值:"))
  17.     b=int(input('请输入b的值:'))
  18.     c=int(input('请输入c的值:'))
  19.     if a == 0:
  20.         print('请重新输入:')
  21.     else:
  22.         break
  23. print(result(a,b,c))
复制代码
想让a=0的时候不用重新执行代码,可以直接重新输入,只有这个break能成功,用之前的bingo==False的方法就结束不了循环,不知道为什么
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

23#
发表于 2018-5-31 00:22:28 |只看该作者
loveting0jie 发表于 2018-5-30 15:48
这次练习里面,我看好多人都写了a=0,b!=0返回-c/b这一段,这里不太懂,(-b±√(b²-4ac))/2a这个计算式里 ...

所以a=0要特别处理
a=0就是一次方程啊
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

75

积分

注册会员

Rank: 2

22#
发表于 2018-5-30 15:48:38 |只看该作者
crossin先生 发表于 2013-9-24 18:22

这次练习里面,我看好多人都写了a=0,b!=0返回-c/b这一段,这里不太懂,(-b±√(b²-4ac))/2a这个计算式里面a应该不能等于0吧,等于0的话不应该都是无解吗?
回复

使用道具 举报

0

主题

1

好友

26

积分

新手上路

Rank: 1

21#
发表于 2018-4-2 17:22:04 |只看该作者
crossin先生 发表于 2013-9-24 18:22

数学不好的,是不是干不了编程。
回复

使用道具 举报

2

主题

0

好友

46

积分

新手上路

Rank: 1

20#
发表于 2016-8-5 12:44:59 |只看该作者
好的,谢谢
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2016-8-5 11:19:09 |只看该作者
妙舞汉宫人 发表于 2016-8-5 10:17
15楼程序运行出来是
(-1.0, -1.0)
无实根

他代码里写的编码是utf8,如果你是windows,换成gbk
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

46

积分

新手上路

Rank: 1

18#
发表于 2016-8-5 10:17:20 |只看该作者
15楼程序运行出来是
(-1.0, -1.0)
无实根
-1
鏃犺В
请问最后一个为什么会出现这种情况
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-4 01:45 , Processed in 0.027820 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部