笨办法学Python - 习题3: Numbers and Math
Exercise2是注释和井号 Comments and Pound Characters 具体详情请参考习题一,这里就不在做过多的赘述。
习题 3: 数字和数学计算
学习目标:了解Python中常用的算术运算符,并了解运算符之间的先后运算顺序
在各大常用的计算机语言中都有常见的算术运算符,Python也是大同小异,下面我们来了解一下Python中常见的算术运算符:
算术运算符
以下假设变量x = 10 ,y = 20
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | x+y = 30 |
- | 减 - 是一个数减去另一个数 | x-y = -10或y-x = 10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | x*y = 200 |
/ | 除 - x除以y | x/y = 0,y/x = 2 |
% | 取余 - 返回除法的余数 | x%y = 10,y%x = 0 |
** | 幂 - 返回x的y次幂 | x**y = 1(20个0) |
// | 取整除 - 返回商的整数部分(向下取整) | 91 // 2 = 4, -9 // 2 = -5 |
Python算术运算符的实例操作:
#! -*- coding=utf-8 -*-
x = 10
y = 20
print "x + y =", x + y
print "x - y =", x - y,",", "y - x =", y - x
print "x * y =", x * y
print "x / y =", x / y,",", "y / x =", y / x
print "x ** y =", x ** y
print "x // y =", x // y,",", "y // x =", y // x
print "9 // 2 =", 9 // 2,",", "-9 // 2=", -9 // 2
输出结果为:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-1.py"
x + y = 30
x - y = -10 , y - x = 10
x * y = 200
x / y = 0 , y / x = 2
x ** y = 100000000000000000000
x // y = 0 , y // x = 2
9 // 2 = 4 , -9 // 2= -5
习题二中的练习代码是:
print "I will now count my checkens:"
print "Hen", 25 + 30 / 6
print "Roosters", 100 - 25 * 3 % 4
print "Now i will count the eggs:"
print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
print "Is it true that (3 + 2 < 5 -7)?"
print 3 + 2 < 5 -7
print "What is 3 + 2?=", 3 + 2
print "What is 5 - 7?", 5-7
print "Oh, that's why it's False "
print "How about some more."
print "Is it greater? ", 5 > -2
print "Is it greater or equal? ", 5 >= -2
print "Is it less or equal? ", 5 <= 2
上述练习代码的运算结果为:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exercise3.py"
I will now count my checkens:
Hen 30
Roosters 97
Now i will count the eggs:
7
Is it true that (3 + 2 < 5 -7)?
False
What is 3 + 2?= 5
What is 5 - 7? -2
Oh, that's why it's False
How about some more.
Is it greater? True
Is it greater or equal? True
Is it less or equal? False
加分习题:
- 使用 # 在代码每一行的前一行为自己写一个注解,说明一下这一行的作用。
- 自己找个想要计算的东西,写一个 .py 文件把它计算出来。
- 有没有发现计算结果是”错”的呢?计算结果只有整数,没有小数部分。研究一下这
是为什么,搜索一下“浮点数(floating point number)”是什么东西。 - 使用浮点数重写一遍 ex3.py ,让它的计算结果更准确(提示: 20.0 是一个浮点数)。
我的答案:
1、使用 # 在代码每一行的前一行为自己写一个注解,说明一下这一行的作用
# 打印输出:I will now count my checkens-我将要数我有多少只鸡
print "I will now count my checkens:"
# 打印输出:计算母鸡的数量,为30只
print "Hen", 25 + 30 / 6
# 打印输出:计算公鸡的数量,为97只
print "Roosters", 100 - 25 * 3 % 4
# 打印输出:Now i will count the eggs-现在我将要去数鸡蛋
print "Now i will count the eggs:"
# 打印输出:鸡蛋的数量为7个
print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
# 打印输出:Is it true that (3 + 2 < 5 -7)? - (3 + 2 < 5 -7)是否正确呢?
print "Is it true that (3 + 2 < 5 -7)?"
# 打印输出:False - 3 + 2的运算结果比 5 -7 的运算结果小是不正确的
print 3 + 2 < 5 -7
# 打印输出:What is 3 + 2?=5 - 3+2的计算结果是5
print "What is 3 + 2?=", 3 + 2
# 打印输出:What is 5 - 7?-2 - 5-7的运算结果是-2
print "What is 5 - 7?", 5-7
# 打印输出:Oh, that's why it's False - 为什么那是错误的呢
print "Oh, that's why it's False "
# 打印输出:How about some more. - 那大概是有多少呢?
print "How about some more."
# 打印输出:Is it greater?True/False - 进行两个数的大小比较
print "Is it greater? ", 5 > -2
print "Is it greater or equal? ", 5 >= -2
print "Is it less or equal? ", 5 <= 2
2、计算下载时间
题目:文件大小是1G,下载带宽是10M下水管,计算下载用几分钟?
解释说明:
(4 * 1024):4M 的准确带宽 = 4096 Kb/s。
/ 8:换算带宽 Kb/s 到 KB/s
1G = 1024000 KB
最后的运算结果是33.33333尾数3无限循环的,但是最后变成了6?(黑人问号),具体原因我们见第3题。
3、有没有发现计算结果是”错”的呢?计算结果只有整数,没有小数部分。研究一下这是为什么,搜索一下“浮点数(floating point number)”是什么东西。?
正常情况下,5除以2结果应该是2.5才对,怎么上面在Python 2.7版本中是2呢?
注意:Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分把其中一个数改成浮点数
则上面的运算为:
在Python的整数除法中,即使除不尽,结果仍然是整数,余数直接被扔掉
注:在Python 3.5中默认是可以显示浮点数的
4、使用浮点数重写一遍 ex3.py ,让它的计算结果更准确(提示: 20.0 是一个浮点数)
将上面需要计算的两个数中的一个定义为浮点数类型就可以,float(x),这样计算的结果就是浮点数
总结:
习题2主要是是认识和掌握常见的Python中的算术运算符,知道整数和浮点数之间的区别,了解Python 2.7和Python 3.5中默认精度。了解整除和取余之间的区别。
扩展:
Python比较运算符
以下假设变量x = 11 ,y = 20
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (x == y) 返回 False |
!= | 不等于 - 比较两个对象是否不相等 | (x != y)返回True |
<> | 不等于 - 比较两个对象是否不相等 | (x <> y) 返回 True |
> | 大于 - 返回x是否大于y | (x > y) 返回 False |
< | 小于 - 返回x是否小于y。 | (x < y) 返回 True |
>= | 大于等于 - 返回x是否大于等于y | (x >= y) 返回 False |
<= | 小于等于 - 返回x是否小于等于y | (x <= y) 返回 True |
注:<> 运算符类似于 运算符!=
Python比较运算符的实例代码演示:
x = 11
y = 20
print "x == y", "运算结果是", x == y
print "x != y", "运算结果是", x != y
print "x <> y", "运算结果是", x <> y
print "x > y", "运算结果是", x > y
print "x < y", "运算结果是", x < y
print "x >= y", "运算结果是", x >= y
print "x <= y", "运算结果是", x <= y
上述代码的运行结果为:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-3.py"
x == y 运算结果是 False
x != y 运算结果是 True
x <> y 运算结果是 True
x > y 运算结果是 False
x < y 运算结果是 True
x >= y 运算结果是 False
x <= y 运算结果是 True
Python赋值运算符
以下假设变量x = 11 ,y = 20
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | z = x + y 将x + y的运算结果赋值为z |
+= | 加法赋值运算符 | z += x 等效于 z = z + x |
-= | 减法赋值运算符 | z -= x 等效于 z = z - x |
*= | 乘法赋值运算符 | z *= x 等效于 z = z * x |
/= | 除法赋值运算符 | z /= x 等效于 z = z / x |
%= | 取模赋值运算符 | z %= x 等效于 z = z % x |
**= | 幂赋值运算符 | z ** = x 等效于 z = z ** x |
//= | 取整除赋值运算符 | z //= x 等效于 z = z // x |
Python赋值运算符的实例代码演示:
x = 11
y = 20
z = 0
print "z = x + y", "运算结果为z1=", x+y
z += x
print "z += x ", "运算结果为z2=",z
z -= y
print "z -= x ", "运算结果为z3=",z
z *= x
print "z *= x ", "运算结果为z4=",z
z /= x
print "z /= x ", "运算结果为z5=",z
z %= x
print "z %= x ", "运算结果为z6=",z
z **= x
print "z **= x ", "运算结果为z7=",z
z //= x
print "z //= x ", "运算结果为z8=",z
上述代码的运行结果为:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-2"
z = x + y 运算结果为z1= 31
z += x 运算结果为z2= 21
z -= x 运算结果为z3= 11
z *= x 运算结果为z4= 231
z /= x 运算结果为z5= 11
z %= x 运算结果为z6= 11
z **= x 运算结果为z7= 7400249944258160101211
z //= x 运算结果为z8= 352392854488483814343
Python位运算符
位运算符是将数字化为二进制来进行计算的
以下假设变量x = 60 ,y = 13 ,二进制格式如下:
x = 0011 1100
y = 0000 1101
-----------------
x & y = 0000 1100
x | y = 0011 1101
x ^ y = 0011 0001
~x = 1100 0011
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个对应位都为1,则该位的结果为1,否则为0 | (x & y) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:参与运算的两个值只要对应的两个个二进位有一个为1时,结果位就为1 | (x | y )输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (x ^ y) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 | (~x ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0 | x << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 | x >> 2 输出结果 15 ,二进制解释: 0000 1111 |
Python位运算符的实例代码演示:
x = 60
y = 13
print "x & y", "运算结果是", x & y
print "x | y", "运算结果是", x | y
print "x ^ y", "运算结果是", x ^ y
print " ~x ", "运算结果是", ~x
print "x << 2", "运算结果是", x << 2
print "x >> 2", "运算结果是", x >> 2
上述代码的运行结果为:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-4.py"
x & y 运算结果是 12
x | y 运算结果是 61
x ^ y 运算结果是 49
~x 运算结果是 -61
x << 2 运算结果是 240
x >> 2 运算结果是 15
Python逻辑运算符
以下假设变量x = 10 ,y = 20
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值 | (x and y) 返回 20 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值 | (x or y) 返回 10 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True | not(x and y) 返回 False |
Python逻辑运算符的实例代码演示:
x = 10
y = 20
print "x and y", "运算结果是", x and y
print "x or y", "运算结果是", x or y
print "not(x and y)", "运算结果是", not(x and y)
上述代码的运行结果为:
C:\Python27\python.exe "D:/pythoncode/stupid_way_study/demo3 Numbers and Math/Exer3-5.py"
x and y 运算结果是 20
x or y 运算结果是 10
not(x and y) 运算结果是 False
Python成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False | x 在 y 序列中 , 如果 x 在 y 序列中返回 True |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
Python运算优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
具体实例运用还得在以后具体环境中具体分析。
参考链接:
http://www.runoob.com/python/python-operators.html
https://blog.csdn.net/aaazz47/article/details/79431678
笨办法学Python - 习题3: Numbers and Math的更多相关文章
- 笨办法学Python - 习题1: A Good First Program
在windows上安装完Python环境后,开始按照<笨办法学Python>书上介绍的章节进行练习. 习题 1: 第一个程序 第一天主要是介绍了Python中输出函数print的使用方法, ...
- 笨办法学Python - 习题4: Variables and Names
1.习题 4: 变量(variable)和命名 学习目标:了解Python中变量的定义,学习定义简明易记的变量名 变量:变量是存储内存中的值,就是每定义一个变量就会在内存中开辟一个空间.基于变量的类型 ...
- 笨办法学Python - 习题11-12: Asking Questions & Prompting People
目录 1.习题 11: 提问 2.习题 12: 提示别人 3.总结 1.习题 11: 提问 学习目标:了解人机交互场景,熟悉raw_input 的用法. 1.在 Python2.x 中 raw_inp ...
- 笨办法学Python - 习题8-10: Printing & Printing, Printing
目录 1.习题 8: 打印,打印 2.习题 9: 打印,打印,打印 3.习题 10: 那是什么? 3.1.转义序列: 4.习题总结: 1.习题 8: 打印,打印 学习目标:继续学习 %r 的格式化输出 ...
- 笨办法学Python - 习题6-7: Strings and Text & More Printing
目录 1.习题 6: 字符串(string) 和文本 2.加分习题: 3.我的答案 4.习题总结 5.习题 7: 更多打印 6.习题总结 1.习题 6: 字符串(string) 和文本 学习目标:了解 ...
- 笨办法学Python - 习题5: More Variables and Printing
1.习题 5: 更多的变量和打印 学习目标:了解用户输入方法,明白pthon2和Python3之间的用户输入的区别.了解格式化字符串(format string)的概念,学会如何创建包含变量内容的字符 ...
- 笨办法学python 习题14 优化过 遇到问题的请看
print "\t what's you name?"user_name = raw_input('>') from sys import argvscript, = arg ...
- 笨办法学 Python (Learn Python The Hard Way)
最近在看:笨办法学 Python (Learn Python The Hard Way) Contents: 译者前言 前言:笨办法更简单 习题 0: 准备工作 习题 1: 第一个程序 习题 2: 注 ...
- 笨办法学 Python (第三版)(转载)
笨办法学 Python (第三版) 原文地址:http://blog.sina.com.cn/s/blog_72b8298001019xg8.html 摘自https://learn-python ...
随机推荐
- Python学习之路 (二)爬虫(一)
Python基础 基础教程参考廖雪峰的官方网站https://www.liaoxuefeng.com/ 一."大数据时代",数据获取的方式 1. 企业生产的用户数据:大型互联网公司 ...
- 如何使用eclipse运行简单的java程序
打开eclipse,选择“file——new——Java project” 为我们的java项目取一个名字,然后点击完成. 这时候左侧列表就有了我们刚才新建的java项目,点开项目,在src目 ...
- nagios-4.0.8 安装部署
1.Nagios工作原理 Nagios周期性调用插件检测服务器状态,并维持一个队列,所有插件返回状态信息都进入队列,Nagios每次从队首开始读取信息,并把状态通过web显示. 安装完成后,在nagi ...
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应 // ...
- 联想ERP项目实施案例分析(10):回到最初再反思IT价值
联想ERP项目实施案例分析(10):回到最初再反思IT价值 投入上千万(未来每年的维护费也非常高),投入一年实施时间,高级副总裁亲自挂帅,各级业务部门管理者亲自负责.骨干业务人员充当区域IT实施者/推 ...
- 【NodeJs】Nodejs系列安装
nodejs安装—npm安装—(其他基于这俩项的另写) windows环境 1)nodejs安装 ①下载对应系统版本的Node.js:https://nodejs.org/en/download/ e ...
- MapReduce开发程序,运行环境配置
Hadoop主机:linux 开发环境主机:Win7 + Itellij 本地运行 1. 下载hadoop安装包,放到本地目录中. 2. 配置环境变量$HADOOP_HOME及$PATH=$HADOO ...
- transform CSS3 2D知识点汇总
transform转换属性的5个值: 1. translate(x值,y值) 移动效果. 2.rotate(45deg) 旋转效果. 3.scale(x轴倍数,y轴倍数) 缩放效果. 4.ske ...
- 【转】Vulhub - 开源的安全漏洞学习与复现项目
转载于:https://uk.v2ex.com/t/485611#reply15 Vulhub 是一个面向大众的开源漏洞靶场,无需 docker 知识,简单执行两条命令即可编译.运行一个完整的漏洞靶场 ...
- 【树形DP】洛谷P1352_没有上司的舞会
本人第一篇Blog,初学树形DP,心情别样鸡冻... 好了废话不多说,我们来看看题目[传送门] 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是 ...