写给小白的Python之005:语句

导读 :

1.if语句

2.while语句

3.for语句

4.break和continue

5.pass和else

一、if语句

if语句是最常用的条件控制语句,Python中的一般形式为:

if 条件一:

    statements

elif 条件二:

    pass # 空语句/占位语句

else:

    statements

Python中用 elif 代替了 else if ,所以if语句的关键字为:if - elif - else。

注意:

1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。

2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。

3、在Python中没有switch - case语句。

 1. if语句的三种类型

单分支

if not (a>0 and a<=50):
    print("在0到50之外....")

简单猜数字游戏:

age_of_princal = 56
guess_age = int(   input(">>:") )

双分支:

if guess_age == age_of_princal:
    print("yes")
else:
    print("no ")

多分支:

if guess_age == age_of_princal:
    print("Yes,you got it..")
elif guess_age > age_of_princal:
    print("shoud try samller..")
else:
    print("try bigger ...")

 

2. 案例:简单成绩等级判断

score = int(input("score:"))
if score > 90:
    print("A")
elif score > 80:
    print("B")
elif score > 70:
    print("C")
elif score > 50:
    print("D")
else:
    print("")

 

3. if嵌套:上火车案例

ticket = 1              #1表示有车票  0表示没有车票
knifeLenght = 48     #cm

#先判断是否有车票
if ticket==1:
    print("通过了车票的检测,进入到了车站,接下来要安检了")

    #判断刀的长度是否合法
    if knifeLenght<=10:
        print("通过了安检,进入到了候车厅")
        print("马上就要见到TA了,很开心.....")

    else:
        print("安检没有通过,等待公安处理....")

else:
    print("兄弟 你还没有买票了,先去买票 才能进站....")

 

4. 猜拳游戏

import random

player = int(input('请输入:剪刀(0)  石头(1)  布(2):'))
computer = random.randint(0,2)

# 用来进行测试   #print('player=%d,computer=%d',(player,computer))

if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):
    print('获胜,哈哈,你太厉害了')

elif player == computer:
   print('平局,要不再来一局')

else:
   print('输了,不要走,洗洗手接着来,决战到天亮')

 

5. 扩展:随机数的处理

在 Python 中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”

import random

导入模块后,可以直接在 模块名称 后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数。

    random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b。

例如:

random.randint(12, 20)  # 生成的随机数n: 12 <= n <= 20   

random.randint(20, 20)  # 结果永远是 20   

random.randint(20, 10)  # 该语句是错误的,下限必须小于上限。

 

二、while循环

1. while 语句基本语法

初始条件设置 —— 通常是重复执行的 计数器

while 条件(判断 计数器 是否达到 目标次数):

    条件满足时,做的事情1

    条件满足时,做的事情2

    ...(省略)...

    处理条件(计数器 + 1)

else:

    语句

注意冒号和缩进。另外,在Python中没有do..while循环。

几乎所有的程序语言都选择从 0 开始计数。因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始。

示例

a, b = 0, 1

while b < 10: # 循环输出斐波纳契数列
    print(b)
    a, b = b, a+b

 

while循环一般通过数值是否满足来确定循环的条件

 i = 0

while i<5:
    print("当前是第%d次执行循环"%(i+1))
    print("i=%d"%i)
    i+=1

结果:

    当前是第1次执行循环

    i=0

    当前是第2次执行循环

    i=1

    当前是第3次执行循环

    i=2

    当前是第4次执行循环

    i=3

    当前是第5次执行循环

    i=4

2. while循环嵌套

打印如下:

    *

    * *

    * * *

    * * * *

    * * * * *

第1种方法实现:

# 定义一个计数器变量,从数字1开始,循环会比较方便
row = 1
while row <= 5:
    print("*" * row)
    row += 1

第2种方法实现:

row = 1

while row <= 5:
    # 假设 python 没有提供字符串 * 操作
    # 在循环内部,再增加一个循环,实现每一行的 星星 打印

    col = 1
    while col <= row:
        print("*", end="")
        col += 1

    # 每一行星号输出完成后,再增加一个换行
    print("")  #等同于print("\n")

    row += 1

 

3. 案例

(1)计算1~100的累积和(包含1和100)

i = 1
sum = 0

while i<=100:
    sum = sum + i
    i += 1

print("1~100的累积和为:%d"%sum)

(2)计算1~100之间偶数的累积和(包含1和100)

i = 1
sum = 0

while i<=100:
    if i%2 == 0:
        sum = sum + i
    i+=1

print("1~100的累积和为:%d"%sum)

(3)打印九九乘法表

第1种方法:

row = 1

while row <= 9:

    col = 1
    while col <= row:
        # end = "",表示输出后,不换行
        # "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐

        print("%d * %d = %d" % (col, row, row * col), end="\t")
        col += 1

    # 一行打印完成的换行
    print("")

    row += 1

第2种方法:

    row = 1

    while row<=9:

        col=1
        while col<=row:
            print("%d*%d=%-2d "%(col,row,row*col),end='')
            col+=1

        print('')

        row+=1

结果:

1*1=1

1*2=2   2*2=4

1*3=3   2*3=6   3*3=9

1*4=4   2*4=8   3*4=12  4*4=16

1*5=5   2*5=10  3*5=15  4*5=20  5*5=25

1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36

1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49

1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64

1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

 

4. print函数扩展

在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行;

如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""

其中 "" 中间可以指定 print 函数输出内容之后,继续希望显示的内容 。

语法格式如下

# 向控制台输出内容结束之后,不会换行

print("*", end="")

# 单纯的换行

print("")

end="" 表示向控制台输出内容结束之后,不会换行

 

三、for循环

1. for循环基本语法

for循环一般是对能保存多个数据的变量,进行遍历。

Python中的for语句与C语言中的for语句有点不同:C语言中的for语句允许用户自定义迭代步骤和终止条件;而Python的for语句可以遍历任何序列(sequence),按照元素在序列中的出现顺序依次迭代。一般形式为:

for variable in sequence:

    statements

else:

    statements

示例

words = ['cat','love','apple','python','friends']

for item in words:

    print(item, len(item))

 

如果你需要在循环体内修改你正 迭代的序列,你最好是制作一个副本,这时切片标记就非常有用了:

words = ['cat','love','apple','python','friends']

for item in words[:]: # 制作整个列表的切片副本
    if len(item) >= 6:
        words.insert(0, item)

print(words)

我们注意到循环语句中还可以使用 else子句 ,下面有讲到。

demo1

name = 'dongGe'

for x in name:

    print(x)

结果:

d

o

n

g

G

e

demo2:

name = ''

for x in name:
    print(x)
else:
    print("没有数据")

结果:

没有数据

 

2. 应用场景

在 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典。(关于字典之后会讲到)

需求:要判断 某一个字典中 是否存在 指定的 值:

       如果 存在,提示并且退出循环;

       如果 不存在,在 循环整体结束 后,希望 得到一个统一的提示.

students = [
    {"name": "阿土",
     "age": 20,
     "gender": True,
     "height": 1.7,
     "weight": 75.0},
    {"name": "小美",
     "age": 19,
     "gender": False,
     "height": 1.6,
     "weight": 45.0},
]

find_name = "阿土"

for stu_dict in students:
    print(stu_dict)
    # 判断当前遍历的字典中姓名是否为find_name
    if stu_dict["name"] == find_name:
        print("找到了")
        # 如果已经找到,直接退出循环,就不需要再对后续的数据进行比较
        break
else:
    print("没有找到")

print("循环结束")

输出结果:

{'gender': True, 'weight': 75.0, 'name': '阿土', 'height': 1.7, 'age': 20}

finded

finish

 

3. 扩展:range函数

如果你要遍历一个数字序列,那么内置的range()函数就可以派上用场了。函数range()常用于for循环中,用于产生一个算术数列:

>>> list(range(10)) # 默认从0开始
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(range(1, 11)) # 从1到11, 前闭后开
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list(range(0, 30, 5)) # 5表示步长, 每隔5取一个数
[0, 5, 10, 15, 20, 25]

示例:(试一下以下代码的运行结果)

for i in range(2, 11):
    print(i)

 

四、break和continue

break 某一条件满足时,退出循环,不再执行后续重复的代码。

continue 某一条件满足时,不执行后续重复的代码 。

break/continue只能用在循环中, 除此以外不能单独使用。

break/continue在嵌套循环中, 只对最近的一层循环起作用,即只对 当前所在循环 有效。

break的作用:

用来结束整个循环。

带有break的循环示例如下:

i = 0

while i<5:
    i = i+1
    print('----')
    if i==3:
        break
    print(i)
else:
    print("==while循环过程中,如果没有执行break退出,则执行本语句==")

运行结果:

----
1
----
2
----

for in 遍历示例如下:

name = 'salmond'

for x in name:
    print('----')
    if x == 'm': 
        break
    print(x)
else:
    print("==for循环过程中,如果没有执行break退出,则执行本语句==")

运行结果:

----
s
----
a
----
l
----

continue的作用

用来结束本次循环,紧接着执行下一次的循环。

带有continue的循环示例如下:

i = 0

while i<5:
    i = i+1
    print('----')
    if i==3:
        continue
    print(i)

运行结果:

----
1
----
2
----
----
4
----
5

for in 遍历示例如下:

name = 'salmond'

for x in name:
    print('----')
    if x == 'm': 
        continue
    print(x)
else:
    print("==while循环过程中,如果没有break则执行==")

试着预想以下上面代码的执行效果,然后实际运行以下。

 

五、pass和else子句

pass

pass语句什么都不做,它只在语法上需要一条语句但程序不需要任何操作时使用。pass语句是为了保持程序结构的完整性。

else子句

在循环语句中还可以使用 else子句 ,else子句在序列遍历结束(for语句)或循环条件为假(while语句)时执行,但循环被break终止时不执行:

# 循环结束执行else子句

for i in range(2, 11):
    print(i)
else:
    print('for statement is over.')

# 被break终止时不会执行else子句

for i in range(5):
    if(i == 4):
        break;
    else:
        print(i)

else:
    print('for statement is over') # 不会输出

 

六、练习题:语句

1. 使用if,编写程序,实现以下功能

_ 从键盘获取用户名、密码

_ 如果用户名和密码都正确(预先设定一个用户名和密码),那么就显示“欢迎进入xxx的世界”,否则提示密码或者用户名错误

 

2.BMI 计算

输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数。

* 例如:一個52公斤的人,身高是155cm,则BMI为 :`52(kg)/1.55^2(m)= 21.6`

* BMI指数:
```
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
```

3.个人所得税

编写一个程序计算个人所得税(以下为个人所得税税率表,3500元起征):
```
应纳税所得额(含税) 税率(%)
不超过1500元的 3
超过1500元至4,500元的部分 10
超过4,500元至9,000元的部分 20
超过9,000元至35,000元的部分 25
超过35,000元至55,000元的部分 30
超过55,000元至80,000元的部分 35
超过80,000元的部分 45
```

 

 

写给小白的Python之004:数据类型之字符串练习题答案

现有字符串num_str = "0123456789",请分别对num_str按下列要求操作:

# 1. 截取从 2 ~ 5 位置 的字符串
print(num_str[2:6])

# 2. 截取从 2 ~ `末尾` 的字符串
print(num_str[2:])

# 3. 截取从 `开始` ~ 5 位置 的字符串
print(num_str[:6])

# 4. 截取完整的字符串
print(num_str[:])

# 5. 从开始位置,每隔一个字符截取字符串
print(num_str[::2])

# 6. 从索引 1 开始,每隔一个取一个
print(num_str[1::2])

# 倒序切片
# -1 表示倒数第一个字符
print(num_str[-1])

# 7. 截取从 2 ~ `末尾 - 1` 的字符串
print(num_str[2:-1])

# 8. 截取字符串末尾两个字符
print(num_str[-2:])

# 9. 字符串的逆序
print(num_str[::-1])
# print(aStr[-1::-1])

 

posted @ 2018-04-02 08:31  salmond  阅读(605)  评论(1编辑  收藏  举报