python循环五要素,5、Python基础之if条件判断和while循环

一、条件判断

1.1 条件判断语句(if 语句)

定义: 条件判断语句就是if语句

重点 需要注意条件判断语句和条件运算符的区别:

条件运算符是有返回结果的,而条件判断语句(if语句)是没有返回结果的。

条件运算符:

## 条件运算符

# 语法: 语句1 条件表达式 else 语句2

# 条件运算符执行时,会先对条件语句中的表达式进行求职判断

# 如果判断为 True ,则执行语句1,并返回执行结果

# 如果判断为 False,则执行语句2,并返回执行结果

max = a if a > b and a > c else c

print(max) # a

条件判断语句:

# 语法:

if 条件表达式:

代码块1

举个栗子:

x = int(input("请输入012三个数字"))

if x == 0:

print(111)

if x == 2:

print(222)

if x == 1:

print(333)

代码块中保存着一组代码,同一个代码块中的代码,要么都执行,要么都不执行;

代码块以缩进开始,直到代码恢复到之前的缩进级别时结束;

代码块就是一种为代码分组的的机制

1.2 input() 函数

作用: input() 函数主要用来获取用户的输入

input()调用后,程序会立即暂停,等待用户输入

用户输入完成后,点击回车程序才会继续向下执行

用户输入完成以后,其所输入的内容会以返回值的形式返回。

特性1: input 接收到的数据一定是一个字符串,响应和 int 类型的数据进行转换,一定要进行类型转换。

a = input("请输入数字:")

print(type(a))

----------输出---------

请输入数字: 111

类型转换

int() 将字符串强制转换为整数类型

b = int(input("请输入数字:"))

print(type(b))

---------输出---------

请输入数字: 222

特性2: input() 函数是阻塞的,阻塞程序的作用。如果不输入,后面的程序永远不执行。

print("开始录入信息")

name = input("请输入你的姓名:")

print(name)

-------输出-------

开始录入信息

请输入你的姓名:

1.3 if-else 语句

语法:

if 条件表达式 :

代码块1

else:

代码块2

执行过程:

if-else 语句在执行时,先对if 后的条件表达式进行请求判断

如果为 True , 则执行 if 后的代码块1

如果为 False,则执行 else 后的代码块2

x = int(input("请输入012三个数字:"))

if x == 0:

print("1111")

else:

print("2222")

1.4 if-elif-else 语句

语法:

if 条件表达式1:

代码块1

elif 条件表达式2:

代码块2

else:

代码块3

执行流程:

if-elif-else语句在执行时,会自上而下依次对条件表达式进行求值判断,

如果表达式的结果为True ,则执行当前代码块,然后语句结束;

如果表达式的结果为False ,则继续向下判断,直到找到 True 为止;

如果所有的表达式都为 False, 则执行 else 后的代码块。

总结: if-elif-else 中只会有一个代码块会执行。

案例分析:

salary = 40000

if salary > 30000:

print('有钱任性')

elif salary >= 20000:

print('解决温饱')

elif salary >= 10000:

print('月薪过万')

elif salary >= 5000:

print('新手小白')

else:

print('吃土吧')

-------输出------

有钱任性

特性: if-elif-else 条件流程是从上到下,按顺序执行的;如果前面的条件满足,后面的停止,不再进行判断。永远有一个满足条件。

补救方式:在条件表达式添加逻辑运算符,来提高代码严谨性。

value = 18000

if value >= 30000:

print("有钱任性")

elif value >= 5000 and value < 10000:

print("新手小白")

elif value >= 20000 and value < 30000:

print("解决温饱")

elif value >= 10000 and value < 20000:

print("月薪过万")

else:

print("吃土吧")

有了上面逻辑判断,这样不管elif条件判断位置如何变化,最终输出结果都一样。

二、while循环

2.1 while 语句

循环语句可以使指定的代码块重复指定的次数,循环语句分为2种: while 循环 和 for循环。

语法:

while 条件表达式:

代码块

else:

代码块

执行过程:

只要条件表达式结果为 True ,就执行代码块。

一直会无线循环,即死循环。直到条件表达式结果为 False ,循环才结束。

while循环三要素:

设定一个初始值;

对初始值进行条件判断,增加一个条件语句,对初始值进行一个条件表达式的限制。

初始值的自增长。

举个栗子:

i = 0

while i < 5:

print(i)

i += 1 # i = i + 1

-----执行-----

0

1

2

3

4

可以看到,上面添加了上面初始值,和条件表达式限制之后,wile 循环不再进入死循环。

例题练习

求1-100内的所有的偶数相加

方法一:

(1) 首先获取 1-100以内的数

(2) 然后取出偶数

(3) 偶数相加

i = 0

j = 0

while i < 100

# print(i)

i += 2

if i % 2 == 0:

j += i # 所有偶数相加之和

# print(j)

print(j)

方法二:直接取偶数相加

# 每个变量的值在内存中为:id , 内存地址,value 三部分。

# 上面比较 value % 2 == 0 ,换种思路,直接 让i=0, i=i+2,这样是不是直接就取的偶数

i = 0

j = 0

while i < 100:

i += 1 # 自增

if i

j += i # 偶数相加

print(j)

--------输出--------

2550

打印 *, 每行5个,没排5个。

# print() 函数模式使用 \n 作为换行符。那么我们是不是可以,每打印5个,就换行一次,这样循环5次,就实现了:

i = 0

while i < 5:

print("*", end=' ')

print("*", end=' ')

print("*", end=' ')

print("*", end=' ')

print("*", end=' ')

print()

i += 1

# 这样可以实现,但是中间部分连续打印5次,都重复执行,也可以使用一个while循环来实现。

i = 0

while i < 5:

j = 0

while j < 5:

print("*", end=' ')

j += 1

print()

i += 1

------输出------

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

打印 下面图案

*

* *

* * *

* * * *

* * * * *

分析:每行打印多少个等于行号个数,且和上题种情况相似。只要判断每行打印的个数即可。

i=0,i行打印 i+1个。

i = 0

while i < 5:

j = 0

while j < i+1:

print("*", end=' ')

j += 1

print()

i += 1

-----输出----

*

* *

* * *

* * * *

* * * * *

打印下面图案

* * * * * i = 0 j < 5 # 从上题中得出的规律

* * * * i = 1 j < 4 # 那么打印4个,就是 j < 4,j<5-i

* * * i = 2 j < 3

* * i =3 j < 2

* i = 4 j <1

分析: i =0 ,j <5, i 加上 j 小于的数都等于5 ,即 j < 5-i,那么打印4行呢 ,i=1 ,j <4 ;3 行,i=2,j<3

i = 0

while i < 5:

j = 0 # j 重新赋值

while j >5-i:

print("*", end=' ')

print()

i += 1

--------输出--------

* * * * *

* * * *

* * *

* *

*

作业

求 1000 以内的水仙花数

科普:什么是水仙花数?

水仙花数,指一个3位数,它的每个位上的数字的3次冥之和等于它本身。例如:1^3 + 5^3 + 3^3=153

方法一:

思路:

1.有取值范围,因此可以采用while循环,水仙花数位三位数,定义初始值count=100

2.再根据规律,根据赋值运算符取出水仙花数的每个位数,百位整除,十位对100取余再对10整除,个位:先对100取余再对10取余即可得出个位。

count = 100

while count < 1000:

count += 1

x = int(count / 100)

y = int(count % 100 / 10)

z = int(count % 100 % 10)

if x < 10 and count == x**3 + y**3+ z**3:

print(x,y,z,"水仙花数:",count)

方法二:切片

思路:直接把水仙花数 i 看作一个字符串,根据索引取值再int()类型转换,根据公式计算,这样是不是更简单呢 ?

i = 100

while i < 1000:

a = str(i)

if int(a[0])**3 + int(a[1])**3 + int(a[2]) == i:

print(a)

i += 1

--------输出--------

1 5 3 水仙花数: 153

3 7 0 水仙花数: 370

3 7 1 水仙花数: 371

4 0 7 水仙花数: 407

2. 打印99乘法表

思路:嵌套循环

i = 1

while i < 10:

j = 1

while j < 1+i:

print('%d * %d = %d' % (j,i,j*i),end='\t')

j += 1

i += 1

print('\n')

---输出---

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

获取用户输入的任意数,判断是否是质数 ?

质数:又称素数,一个大于1 的自然数,除了1和它自身外,不能被其他自然数整数的数叫质数。

num = int(input("请输入一个数字:"))

if 1 < num <= 2:

print(num,'是质数')

elif num > 2:

i = 2 # 定义因子

while i < num:

if num % i == 0:

print(num,"不是质数")

break

i += 1

else:

print(num, '是质数')

else:

print(num,"不是质数")

---------输出--------

请输入一个数字:7

7 是质数

请输入一个数字:1

1 不是质数

请输入一个数字:2

2 是质数

请输入一个数字:4

4 不是质数

猜拳游戏:

出拳 玩家: 手动输入 电脑:随机输入

判断输赢:玩家获胜 电脑胜 平局

分析: 石头=0 剪刀=1 布=2

电脑随机出数,从【0,1,2】中出一个随机数。

print("==========出拳游戏============")

import random

while True:

p = input("请输入石头,剪刀,布:")

if p != "石头" and p != "剪刀" and p != "布":

print("输入无效,请重新输入!")

else:

s = random.randint(0,2)

if s == 0:

print("玩家出拳:",p,"电脑出拳:%s" % '石头')

elif s == 1:

print("玩家出拳:",p,"电脑出拳:%s" % '剪刀')

else:

print('玩家出拳:',p,"电脑出拳:%s" % '布')

剪刀 = 1

布 = 2

if (p =="石头" and s== 1) or (p == "剪刀" and s == 2) or (p == "布" and s == 0):

print("%s获胜" % "玩家")

elif (p == "石头" and s == 2) or (p == "剪刀" and s == 0) or (p == "布" and s == 1):

print('%s获胜'% "电脑")

else:

print('平局')

6e692eeccd84

图片.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值