一、for循环语句:
for循环语法:
for 变量 in range(x):
循环需要执行的代码
range(stop): 0 ~ stop-1
range(start,stop): start ~ stop-1
range(start,stop,step): start ~ stop-1 step(步长)
# print(range(1,10,2))
#1~100之间的所有偶数求和
sum = 0
for i in range(2,101,2):
sum += i
print(sum)
#输入一个数字,并求出它的阶乘
num = int(input('Num:'))
res = 1
for i in range(1,num+1):
res *= i
print('%d的阶乘结果为: %d' %(num,res))
2.for循环的中断:
break:跳出整个循环,不会再执行循环后面的内容,但是循环之后的内容依然执行
continue:跳出本次循环,continue后面的代码不再执行,但是循环依然继续
exit():结束程序的运行
for i in range(10):
if i == 5:
# continue
# break
exit()
print('hello')
print(i)
print('hello python')
#练习1
有1,2,3,4四个数字
求四个数字能生成多少个互不相同且无重复数字的三位数(不能含有122 133类似)
count = 0
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i != j and j !=k and k != i:
print(i * 100 + j * 10 + k)
count += 1
print('生成%d个无重复数字的三位数' %count)
练习2:
1.输入用户名和密码
2.判断是否正确(name = 'root', passwd = 'westos')
3.登录仅有3次及会,超过3次,报错
for i in range(3):
name = input('用户名: ')
passwd = input('密码: ')
if name == 'root' and passwd == 'westos':
print('登录成功!')
break
else:
print('登录失败')
print('您还剩余%d次机会' %(2-i))
else:
print('失败超过3次,请稍后再试!')
练习3:
#输入shell中的命令让其可以运行,按回车时还显示命令行提示字符
import os ##使输入中可以使用shell中的命令
# os.system('ls')
# a = input('[kiosk@foundation0 ~]$ ')
# print(a)
for i in range(1000): ##在后面提到while后可以进入死循环,本处只是个例子
cmd = input('[kiosk@python ~]$ ')
if cmd:
if cmd == 'exit':
print('logout')
else:
os.system(cmd)
else:
continue
练习4:
最小公倍数 = (num1 * num2) / 最大公约数
#1.接收两个数字
num1 = int(input('Num1: '))
num2 = int(input('Num2: '))
#2.找出两个数中的最小值
min_num = min(num1,num2)
#3.最大公约数范围在1~min_num之间
for i in range(1,min_num+1):
if num1 % i ==0 and num2 %i ==0:
gys = i
#4.最小公倍数
gbs = (num1*num2 / gys)
print('%d和%d的最大公约数为: %d' %(num1,num2,gys))
print('%d和%d的最小公倍数为: %d' %(num1,num2,gbs))
二、while循环语句:
1.while语句:
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
...
#1.定义计数器
i = 0
#2.开始循环
while i < 3:
#循环内需要做的事情
print('hello python')
#处理计数器
i += 1
while True: ##死循环,只要输出不为空就一直循环下去,可以手动终止循环
print('hello python')
练习:求0~100之间的数字和:
i = 0
sum = 0
while i <= 100:
sum += i
i += 1
print('0~100之间的数字求和结果为: %d' %sum)
2.while嵌套:
练习1:输出9x9乘法表
row = 1
while row <= 9:
col = 1
while col <= row:
print('%d * %d = %d\t' %(col,row,col*row),end='')
col += 1
print('')
row += 1
练习2:
1.随机生成1~100的数字
2.5次机会
3.too big
4.too small
5.恭喜,并退出循环
import random
trycount = 0
computer = random.randint(1,100)
print(computer)
while trycount < 5:
# player = int(input('Num: ')) 默认不显示电脑生成的数字
if player > computer:
print('too big')
trycount += 1
elif player < computer:
print('too small')
trycount += 1
else:
print('恭喜')
break
三、字符串的简单用法
1.字符串定义方式:
a = 'hello'
b = "westos"
c = 'let\'s go' ##\转义'
d = "let's go"
e = """ ##"""多行定义
用户管理系统
1.添加用户
2.删除用户
3.显示用户
"""
print(a)
print(b)
print(c)
print(d)
print(e)
print(type(e))
2.字符串的特性
索引:
s = 'hello'
print(s[0])
print(s[1])
切片:
s='hello'
print(s[:3]) #显示前3位
print(s[0:3])
print(s[0:4:2]) #s[start:end:step] 从start开始,到end-1结束
print(s[:]) #显示完整字符串
print(s[::-1]) #字符串的反序
print(s[1:]) #显示第二位到最后一位
print(s[:-1]) #显示第一位到倒数第二位i
print(s[-1]) #显示最后一位
重复:
s='hello'
print(s * 5) #把hello连续显示5次
连接:
s='hello'
print('hello' + 'world')
成员操作符号:
s='hello'
print('h' in s) ##在hello里面存在这个字符即输出True,不存在就输出Flase
print('q' in s)
3.几个小练习
练习1:回文数的判断(设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。)
num = input('Num:')
if num == num[::-1]:
print('回文数')
else:
print('不是')
练习2:抓取日志文件的简单方法,抓取网页类似
# filename = 'hello.log'
#
# if filename.endswith('.log'):
# print(filename)
# else:
# print('error')
#
url1 = 'file:///mnt'
url2 = 'ftp://172.25.254.250/pub'
url3 = 'http://172.25.254.250/index.html'
if url3.startswith('http://'):
print('爬取网页')
else:
print('无法爬取')
练习3:判断变量是否合法
1.第一个字符是否为字母或者下划线
2.如果是,继续
3.如果不是,报错
4.依次判断除了第一个字符以外的其他字符
5.判度是否为字母、数字或者下划线
while True:
s = input('变量名: ')
if s == 'exit':
print('退出')
break
if s[0].isalpha() or s[0] == '_':
for i in s[1:]:
if not(i.isalnum() or i == '_'):
print('%s变量名不合法' %s)
break
else:
print('%s变量名合法' %s)
else:
print('%s 变量名不合法' %s)
4.字符串的搜索和替换:
s = 'hello world hello'
#find找到子串,并返回最小的索引
print(s.find('hello')) #第一个hello从0开始,所以最小索引为0
print(s.find('world'))
#rfind找到子串,并返回最大的索引
print(s.rfind('hello')) #最后一个hello从12开始,所以最大索引为12
#替换
print(s.replace('hello','westos'))
5.字符串的对齐
print('学生管理系统'.center(30)) ##在30个空为中居中显示
print('学生管理系统'.center(30,'*')) ##居中显示并在两边加上*
print('学生管理系统'.ljust(30,'*')) ##只在右边显示*
print('学生管理系统'.rjust(30,'*')) ##只在左边显示*
6.字符串的统计
print('hello'.count('l')) ##hello中有几个l
print('hello'.count('ll')) ##hello中有几个ll
print(len('hello')) ##hello中有字符个数
7.字符串的分离和连接
分离:
s = '172.25.254.250'
s1 = s[::-1]
print(s1) ##字符串的倒序
s2 = s.split('.')
print(s2) ##字符串以.为分隔符拆开
s3 = s2[::-1]
print(s3) ##字符串拆开后倒序
date = '2019-06-23'
date1 = date.split('-')
print(date1)
连接:
print('-'.join(date1))
print('.'.join(s2))
8.字符串的反转
print(' '.join(input().split()[::-1]))
9.字符串的小练习
练习:给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:
'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场
如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
示例 1:
输入: "PPALLP"
输出: True
示例 2:
输入: "PPALLL"
输出: False
s = input()
if s.count('A') <= 1 and s.count('LLL') == 0:
print(True)
else:
print(False)
四、几道综合练习题:
1.(1)随机生成10以内加(可以是加减乘除)法题目
(2)学生查看题目并输入答案
(3)判断学生答案是否正确
(4)退出时,统计答题目总数,并统计正确数量和正确率(保留两位小数)
import random
fuhao = ['+','-','*','/']
count = 0
right = 0
while True:
a = random.randint(0,10)
b = random.randint(0,10)
c = random.choice(fuhao)
print('%d %s %d = ' %(a,c,b))
question = input('请输入您的答案:(exit退出)')
if c == '+':
result = a + b
if question == str(result):
print('回答正确')
elif question == 'exit':
break
else:
print('回答错误')
count += 1
right += 1
count += 1
elif c == '-':
result = a - b
if question == str(result):
print('回答正确')
elif question == 'exit':
break
else:
print('回答错误')
count += 1
right += 1
count += 1
elif c == '*':
result = a * b
if question == str(result):
print('回答正确')
elif question == 'exit':
break
else:
print('回答错误')
count += 1
right += 1
count += 1
elif c == '/':
result = a / b
if question == str(result):
print('回答正确')
elif question == 'exit':
break
else:
print('回答错误')
count += 1
right += 1
count += 1
if count == 0:
print('错误:你还没有开始答题!!!')
else:
percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))
2.*的4种打印方法,打印出来应该是下图所例类型
"""
*
**
***
****
*****
*****
****
***
**
*
*
**
***
****
*****
*****
****
***
**
*
"""
# 定义行变量,从1开始计数
row = 1
# 循环5次
while row <= 5:
print("*" * row) # 第i行打印i个星星
row += 1
# 定义行变量,从1开始计数
row = 5
# 循环5次
while row >= 1:
print("*" * row) # 第i行打印i个星星
row -= 1
#定义行变量,从1开始计数
row = 1
while row <= 5: #打印5行
col = 1 #定义列变量,从1开始计数
while col <= 5: #每行打印5列
if col <= (row - 1):
print(" ", end="")
else:
print("*", end="")
col += 1
print("") #每打印完1行后换行
row += 1
#定义行变量,从1开始计数
row = 1
while row <= 5: #打印5行
col = 5 #定义列变量,从5开始计数
while col >= 1: #每行打印5列,打印row个*,col-row个空格
if col >= (row + 1):
print(" ", end="")
else:
print("*", end="")
col -= 1
print("") #每打印完1行后换行
row += 1