大爽Python入门公开课教案

点击查看教程总目录

这里只初步认识下循环和判断,以便于我们去实现一些简单的计算。

循环和判断的详细知识和细节,我们将在后面的章节(大概是第三章)展开阐述。

1 初步了解

在本系列课程的准备工作的第二节 感受IDE中,展示过以下代码

for i in range(10):
if i % 2 == 0:
print(i)

其输出为

0
2
4
6
8

当时只是让大家看这个代码的样子和了解敲代码的感觉,

这里来解释下这个代码。

简单循环

for i in range(n)的意思是从0遍历到n(不包含n)。

更通俗一点来说,其效果是:

循环n次,过程中i从0增加到n-1。

示例

>>> for i in range(3):
... print("Say important things three times")
...
Say important things three times
Say important things three times
Say important things three times
>>> for i in range(5):
... print(i)
...
0
1
2
3
4

简单判断

if i % 2 == 0:的作用是判断i除2的余数是否等于0。

if后面接判断语句,判断成功后,执行:下面缩进的语句,不成功则跳过。

这里的==是比较运算符,判断两个东西是否相等。

if后面的判断语句常会用到比较运算符有:

  • !=: 不等于
  • >: 大于
  • >=: 大于等于
  • <: 小于
  • <=: 小于等于

代码示例

>>> x = 5
>>> if x > 0:
... print("x is greater than 0")
...
x is greater than 0
>>> if x > 10:
... print("x is greater than 10")
...
>>> if x % 2 == 0:
... print("x is even")
...
>>> if x % 2 == 1:
... print("x is odd")
...
x is odd

补充翻译:

even: 偶数

odd: 奇数

2 缩进

决定范围

在上面的forif语句中,其冒号:后面的代码都有缩进。

缩进声明了forif的管辖范围的。

forif只管它下面有缩进的地方。

没有缩进的,就代表超出了其管辖范围。

或者说,跳出了forif

示例

比如以下的python代码

for i in range(3):
print("print 3 times: %s" % i) print("print once")

其输出为

print 3 times: 0
print 3 times: 1
print 3 times: 2
print once

再比如以下的python代码

for i in range(3):
if i % 2 == 0:
print("%s is even" % i) print(i)

其输出为

0 is even
0
1
2 is even
2

细节说明

在python里面,规范的缩进是用四个空格作为一个缩进,

在大多数IDE里面写python文件(比如atompycharm),使用Tab键往往会自动给你去生成四个空格。

这种情况使用Tab键和四个空格没区别。

但有的时候,从网上复制的代码,可能缩进是Tab键,你本地的是四个空格的话,

代码放在一起会冲突。

因为缩进方式不一致,报错一般为IndentationError

这个时候要统一缩进格式。

一般方法是,先去掉它的缩进,再按原结构加上缩进。

快捷方法

选中一段代码(可以是多行的),

按Shift+Tab可以一起左移(去掉一级缩进),

按Tab可以一起右移(添加一级缩进),

3 简单使用

2的n次幂表

题目:张三是一个经常和2的次方打交道的人,他需要一张2的幂表,展示2的n次幂(n<=10)。

期望输出:

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024

示例代码

for i in range(11):
v = 2 ** i
print("2^%s = %s" % (i, v))

递增求和

上一题的进阶。

题目:

某种物品时累进计费的(且限购八个),

买第1个的价格是100元。

之后每个,都在上一个的基础上涨价25%(结果四舍五入取整)。

即第2个的价格是125元。

第3个的价格是125(1+25%)=156

第4个的价格是156
(1+25%)=195,

依此类推...

请展示依次购买时的:

购买个数(n),对应单价(第n个的单价),和总价

提示:可使用round()函数来取整,示例如下

>>> round(3.14)
3
>>> round(3.6)
4

期望输出:

number: 1, current price: 100, total price: 100
number: 2, current price: 125, total price: 225
number: 3, current price: 156, total price: 381
number: 4, current price: 195, total price: 576
number: 5, current price: 244, total price: 820
number: 6, current price: 305, total price: 1125
number: 7, current price: 381, total price: 1506
number: 8, current price: 477, total price: 1983

示例代码

base = 100
rise_rate = 0.25
total_price = 0 for i in range(8):
rate = (1 + rise_rate) ** i
current_price = base * rate
current_price = round(current_price)
total_price += current_price line = "number: %s, current price: %s, total price: %s"
print(line % (i+1, current_price, total_price))

有趣的极限

题目:

\[S = 1 - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \frac{1}{5} - \frac{1}{6} + ... + \frac{(-1)^{n-1}}{n}
\]

求n分别为100,1000,10000时S的值。

期望输出:

n=100: S=0.688172179310195
n=1000: S=0.6926474305598223
n=10000: S=0.6930971830599583

示例代码

n = 100
k = 1
s = 0
for i in range(n):
s += k / (i + 1)
k = -k
print("n=%s: S=%s" % (n, s)) n = 1000
k = 1
s = 0
for i in range(n):
s += k / (i + 1)
k = -k
print("n=%s: S=%s" % (n, s)) n = 10000
k = 1
s = 0
for i in range(n):
s += k / (i + 1)
k = -k
print("n=%s: S=%s" % (n, s))

拓展说明:

  1. 目前只能先这么重复着写,未来学了函数,再来优化这部分代码。
  2. 补充2:S的极限值为ln2,值为0.6931471805599453......
>>> import math
>>> math.log(2)
0.6931471805599453

S的极限值证明:

大爽Python入门教程 1-3 简单的循环与判断的更多相关文章

  1. 大爽Python入门教程 1-1 简单的数学运算

    大爽Python入门公开课教案 点击查看教程总目录 1 使用pycharm建立我们的第一个项目 打开pycharm,点击菜单栏,File->New Project 在Location(项目地址) ...

  2. 大爽Python入门教程 3-1 布尔值: True, False

    大爽Python入门公开课教案 点击查看教程总目录 1 布尔值介绍 从判断说起 回顾第一章介绍的简单的判断 >>> x = 10 >>> if x > 5: ...

  3. 大爽Python入门教程 3-2 条件判断: if...elif..else

    大爽Python入门公开课教案 点击查看教程总目录 简单回顾if 回顾下第一章的代码 >>> x = 5 >>> if x > 0: ... print(&q ...

  4. 大爽Python入门教程 2-3 字符串,列表,字典

    大爽Python入门公开课教案 点击查看教程总目录 除了通用的序列方法, 列表和字符串还有些自己的专属方法. 后面介绍有些是英中文对照介绍(英文来自官方文档), 便于大家更深入的去理解其意思. 灵活的 ...

  5. 大爽Python入门教程 2-1 认识容器

    大爽Python入门公开课教案 点击查看教程总目录 1 什么是容器 先思考这样一个场景: 有五个学生,姓名分别为: Alan, Bruce, Carlos, David, Emma. 需要给他们都打一 ...

  6. 大爽Python入门教程 1-4 习题

    大爽Python入门公开课教案 点击查看教程总目录 1 [思考]方向变换 小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度), 小明面朝哪里?小明转过了多少圈? (360度为一圈,圈数向 ...

  7. 大爽Python入门教程 1-5 答案

    大爽Python入门公开课教案 点击查看教程总目录 1 方向变换 >>> 51//4 12 >>> 51%4 3 答: 向左转51次之后, 小明面朝东方, 转过了1 ...

  8. 大爽Python入门教程 1-2 数与字符串

    大爽Python入门公开课教案 点击查看教程总目录 1 整数与浮点数 整数大家都知道,比如1, 2, 10, 123, 都是整数int. 浮点数是什么呢? 上一节的除法运算,不知道有没有人注意到,其结 ...

  9. 大爽Python入门教程 0-2 什么是IDE?python选什么IDE好?

    大爽Python入门公开课教案 点击查看教程总目录 一 感受IDE 什么是IDE? 在这里,我并不想直接给出一个回答, 因为这个回答对初学者来说,可能有些抽象. 我想先带大家感受下IDE. 1 比较不 ...

随机推荐

  1. C++: 基于四叉树数据结构的自适应网格(初探)

    C++: 基于四叉树数据结构的自适应网格 二叉树是一种典型的非线性存储数据结构,查找效率可以达到\(O(log_2N)\),同样,这类树状结构存在许多种变体,详细参考邓俊辉老师的<数据结构C++ ...

  2. WPF之资源专题

    1.一般程序的资源可以分为四个等级: 数据库中的数据相当于放在仓库里 资源文件里的数据相当于放在旅行箱里 WPF对象资源里的数据相当于携带在背包里 变量中的数据相当于拿在手里 2.资源的查找顺序是沿着 ...

  3. 基于BootStrap的轮播图

    准备 先设计一个承载轮播图的区域:四周向外阴影.扁平圆角: 1 #myShuffArea{ 2 width: 50%; 3 height: 300px; 4 border: solid 1px gai ...

  4. STM32中操作寄存器GPIOB_CRL &= ~( 0x0F<< (4*0))与GPIOB_CRL &=~(0x0F)之间有什么区别吗?

    没有区别,作用相同.只是这样写便于修改和沿用. 对于只用到PB0端口的程序~(0x0f << (4*0)) 和~0x0f没有区别.0x0f <<(4*N) 就是 向左 移动N个 ...

  5. MongoDB中如何优雅地删除大量数据

    删除大量数据,无论是在哪种数据库中,都是一个普遍性的需求.除了正常的业务需求,我们需要通过这种方式来为数据库"瘦身". 为什么要"瘦身"呢? 表的数据量到达一定 ...

  6. Servlet学习一(Servlet的使用流程)

    一.servlet运行流程 运行流程:浏览器发送请求到服务器,服务器根据url地址在webapps中寻找对应的项目文件夹然后再web.xml中检索对应的servlet,并进行调用二.servlet类写 ...

  7. pagelayout在py中的引用不支持size_hint和pos_hint

    from kivy.uix.pagelayout import PageLayout from kivy.uix.button import Button from kivy.app import A ...

  8. JavaAgent型内存马基础

    Java Instrumentation ​ java Instrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序.这种监测和协助包括但不 ...

  9. 单片机零基础学习之从“点灯”入门STM32

    本篇文章通过一个简单的例子来熟悉模块化编程以及利用库函数的方法进行开发使用STM32外设的基本流程. 首先,我们打开本讲的例程,在工程目录我们可以看到驱动分组下有 led.delay 两个.c源文件, ...

  10. VS 2013 配置份openGL环境

    几个要素: 1.  在E:\Microsoft Visual Studio 12.0\VC\include下创建GL文件夹,放入glut.h头文件. 2.  C:\Windows\System32下要 ...