python 流程控制基础知识总结 和九九乘法表、质数、水仙花数、猜拳游戏练习
1、条件判断
条件判断语句( if语句 )
- 执行的流程:
• if语句在执行时,会先对条件表达式进行求值判断,
• 如果为True,则执行if后的语句
• 如果为False,则不执行 - **语法:if 条件表达式 : **
- 代码块
• 代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
• 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
• 代码块就是一种为代码分组的机制
a = int(input("请输入012中的一个数字:"))
if a == 0:
print(111111)
if a == 1:
print("哈哈哈哈")
if a == 2:
print("shbvubsv")
input() 函数
- 该函数用来获取用户的输入
- input()调用后,程序会立即暂停,等待用户输入
- 用户输入完内容以后,点击回车程序才会继续向下执行
- 用户输入完成以后,其所输入的的内容会以返回值得形式返回
# input()(输入)函数: 接收到的是一个字符串,实际应用中根据自己的需求进行转换
# str()函数:将数据强制转换为字符串
# int()函数:将数据强制转换为整型
# float()函数: 将数据强制转换为浮点型
# print()(输出)函数: 打印输出函数
a = input('请输入内容:')
print(a,type(a))
if-else语句
- 语法:
if 条件表达式 :
代码块
else :
代码块
- 执行流程:
• if-else语句在执行时,先对if后的条件表达式进行求值判断
• 如果为True,则执行if后的代码块
• 如果为False,则执行else后的代码块
n = int(input("请输入内容:"))
if n < 20:
print("skdbdsnbkn")
else:
print("我见众生皆无意,唯有见你动了情")
'''如果输入的整数小于20,就会打印:skdbdsnbkn,反之就会打印:我见众生皆无意,唯有见你动了情'''
if-elif-else 语句
• 语法:
if 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
…
else :
代码块
money = 2000
if money <= 1000:
print('这个月要吃土')
elif 1000<money<=2000:
print('月光族')
elif 2000<money<5000:
print("生活温饱")
else:
print("生活太梦幻了")
- 执行流程:
• if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
• 如果表达式的结果为True,则执行当前代码块,然后语句结束
• 如果表达式的结果为False,则继续向下判断,直到找到True为止
• 如果所有的表达式都是False,则执行else后的代码块 - 总结: if-elif-else中只会有一个代码块会执行
2、循环控制
while语句
- 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环 和 for循环
- 语法:
while 条件表达式 :
代码块
else:
代码块
n = int(input("请输入内容:"))
while n<10:
print('继续')
else:
print('over')
break和continue
• break 可以用来立即退出循环语句,包括else语句
• continue 用来跳过当次循环
import random
a = random.randint(0,6) #随机生成0-6之间的整数
while True:
if 3<=a<6:
print("这个数字是%d"%a)
break
else:
print("不符合要求")
continue
'''break是跳出当前循环,并结束程序,continue是跳出本次循环,进行下一次程序运行'''
for循环遍历
for循环
• 通过for循环来遍历列表
语法
for 变量 in 序列(遍历的规则):
代码块
- 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
for i in [1,2,3,4,5,6,7,8]:
print(i)
'如果i在列表[1,2,3,4,5,6,7,8]里,将i依次打印出来'
- range(start, stop[, step])
参数说明
• ·start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
• stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
• step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
3、循环嵌套
- 循环嵌套
• Python 语言允许在一个循环体里面嵌入另一个循环。
while 表达式:
while 表达式:
代码块
代码块
for 变量 in 循环规则:
for 变量 in 循环规则:
代码块
代码块
4、练习
- 1、九九乘法表
#九九乘法表
i = 1
j = 1
n = i * j
for i in range(1,10):
for j in range(1,i+1):
m = '%d * %d = %d'%(j,i,n)
print(m,end=' ')
print()
- 2、求1000以内所有的水仙花数
for i in range(1, 10):
for j in range(0, 10):
for k in range(0, 10):
if i * 100 + j * 10 + k == i ** 3 + j ** 3 + k ** 3:
print(i * 100 + j * 10 + k)
- 3、获取用户输入的任意数,判断其是否是质数?
# 获取用户输入的任意数,判断其是否是质数?
while True:
n = int(input('请输入数字:'))
if n == 0:
print('%d不是质数,请重新输入!'%n)
elif n % 2 == 1:
print('%d是质数。'%n)
break
else:
continue
- 4、1. 猜拳游戏:
• 出拳 玩家:手动输入 电脑:随机输入
• 判断输赢: 玩家获胜 电脑获胜 平局
#出拳 玩家:手动输入 电脑:随机输入
#判断输赢: 玩家获胜 电脑获胜 平局
import time
import random
def function():
win_n = 0 # 用于存放【玩家】的胜利次数
win_m = 0 # 用于存放【电脑】的胜利次数
for i in range(1,4):
n = int(input('请玩家输入数值(0代表石头,1代表剪刀,2代表布):')) # n代表玩家
m = random.randint(0, 2) # m代表电脑,随机获取0-2之间的整数
time.sleep(2)
print('进行第{}局游戏'.format(i))
if n==0 and m==1 or n==1 and m==2 or n==2 and m==0 :
win_n += 1 #玩家胜场次+1
print(f'【电脑】输入的是{m},【玩家】输入的是{n}且获胜,胜利次数为{win_n}')
elif n == 0 and m == 2 or n == 1 and m == 0 or n == 2 and m == 1:
win_m += 1 #电脑胜场次+1
print('【电脑】获胜输入的是%d且获胜,【玩家】输入的是%d,胜利次数为%d' %(m,n,win_m))
else:
print('平局不计分!!!')
#将进行3场游戏后,进行玩家和电脑的胜场次进行判断
if win_m<win_n<=2:
print('经过3次游戏后,【玩家】胜出,胜场为%d'%win_n)
elif win_n<win_m<=2:
print('经过3次游戏后,【电脑】胜出,胜场为%d'%win_m)
elif win_n==win_m==1:
print('*'*60)
print('【电脑】和【玩家】平局,进行加赛!')
a = 5
for j in range(4,a):
print('进行第%d局比赛' % j)
n = int(input('请玩家输入数值(0代表石头,1代表剪刀,2代表布):')) # n代表玩家
m = random.randint(0, 2) # m代表电脑,随机获取0-2之间的整数
if n == 0 and m == 1 or n == 1 and m == 2 or n == 2 and m == 0:
win_n += 1
print(f'【电脑】输入的是{m},【玩家】输入的是{n}且获胜,胜利次数为{win_n}')
elif n == 0 and m == 2 or n == 1 and m == 0 or n == 2 and m == 1:
win_m += 1
print('【电脑】获胜输入的是%d且获胜,【玩家】输入的是%d,胜利次数为%d' % (m, n, win_m))
elif n == m:
a += 1
print('平局不计分!!!')
continue
function()
'''
0代表石头,1代表剪刀,2代表布
我还想了另一种方法,就是通过n-m的差值来进行的,因为时间原因也没有仔细研究,\
如果你感兴趣可以自己尝试尝试,但是会有一个问题是不同的差值会代表双重含义,有可能会失败。
如:1-0=1,2-1=1中’1‘所代表的胜负是不一样!!'''
总结:
本文为学习笔记,转载请标明出处,本文仅供交流学习,请勿用于非法途径,希望本文对大家有帮助。
仅是个人意见,如有不足之处或者侵权,请留言