####循环语句####
1+2+3+...100=
"""
# C语言或者Java;
sum = 0
for(int i=1; i<100; i++):
sum = sum + i
0+1+2+3+...100
# python
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(7)
[0, 1, 2, 3, 4, 5, 6]
>>> help(range)
>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2)
[1, 3, 5, 7, 9]
>>> # 拿出1~10之间所有的偶数
... range(2,11,2)
[2, 4, 6, 8, 10]
>>> # 拿出1~10之间所有的奇数
... range(1,11,2)
[1, 3, 5, 7, 9]
*** range()函数
range(stop): 0~stop-1
range(start, stop): start~stop-1
range(start, stop, step): start~stop-1, step为步长
# for循环使用的语法:
for 变量 in range(10):
循环需要执行的代码
for 变量 in range(10):
循环需要执行的代码
else:
循环执行结束执行的代码
"""
sum = 0
for i in range(1,101): # i=1,2,3....100
sum = sum + i
print(sum)
# 需求1: 求1~100之间所有偶数的和;
# 需求2: 求1~100之间所有奇数的和;
# 需求3: 用户输入一个整形数, 求该数的阶乘; 3!=3*2*1=6
###用户登陆程序###
"""
用户登陆程序需求:
1. 输入用户名和密码;
2. 判断用户名和密码是否正确? (name='root', passwd='westos')
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("登陆次数超过三次, 请等待100s后再次登陆")
###exit_break_continue#####
"""
break: 跳出整个循环, 不会再循环里面的内容;
continue:跳出本次循环, continue后面的代码不再执行, 但是还会继续循环;
exit: 结束程序的运行
"""
# 0,1,2,3,4....9
for i in range(10):
if i == 5:
break
print(i)
# 0,1,2,3,4....9
for i in range(10):
if i == 5:
continue
print(i)
###break练习,实现命令行提示符雏形####
# 倒入os模块
import os
#for i in range(100):
# 死循环
while True:
cmd = input("[kiosk@test ]$ ")
if cmd:
if cmd == 'exit':
print('logout')
break
print("hello") # 不会执行
else:
print("run %s" %(cmd))
# 运行shell命令
os.system(cmd)
else:
continue
print("hello") # 不会执行的
###for循环练习,实现最大公约数和最小公倍数#####
"""
输入两个数值:
求两个数的最大公约数和最小公倍数.
最小公倍数=(num1*num2)/最大公约数
"""
# 2,3
# 2,6
# 1. 输入两个数值: input接收的是字符串类型
num1 = int(input('Num1:'))
num2 = int(input('Num2:'))
# 2. 找出两个数中的最小值
# min_num = min(num1, num2)
min_num = num1 if num1<num2 else num2
# 3. 最大公约数的范围在1~min_num之间;最大公约数就是num1和num2能整除的最大的数;
for i in range(1,min_num+1): # 1, 2
# 2%1==0 ; 3%1==0 gys=1
# 2%2==0 6%2!=0 gys=2
if num1 % i == 0 and num2 % i == 0:
# 当循环结束, gys中保存的是最大的约数;
gys = i
# 4. 最小公倍数
lcm = int((num1*num2)/gys)
print("%s和%s的最大公约数为%s" %(num1, num2, gys))
print("%s和%s的最小公倍数为%s" %(num1, num2, lcm))
####range和xrange####
# python2:
- range(5): 即刻生成数据, 消耗时间并占用内存;
- xrange(5): 先生成一个xrange对象, 使用值时才生成数据, 占用内存;
# python3:
- range(5) 相当与python2里面的xrange;
####循环语句while循环###
"""
while 条件语句:
满足条件执行的语句
else:
不满足条件执行的语句
"""
# 1. 1+2+3+.....+100
# i+=1 i=i+1
sum = 0
i = 1
while i <=100:
sum += i
i += 1
print(sum)
# 2. 把用户登陆的代码for循环部分改写为while循环;
####while循环练习,猜数字游戏####
"""
# 猜数字游戏
if , while, break
1. 系统随机生成一个1~100的数字;
** 如何随机生成整型数, 导入模块random, 执行random.randint(1,100);
2. 用户总共有5次猜数字的机会;
3. 如果用户猜测的数字大于系统给出的数字,打印“too big”;
4. 如果用户猜测的数字小于系统给出的数字,打印"too small";
5. 如果用户猜测的数字等于系统给出的数字,打印"恭喜中奖100万",并且退出循环;
# 方法1:
import random
num = random.randint(1,100)
print(num)
for i in range(1,6):
guess = int(input("plese guess:"))
if guess > num :
print("too big")
elif guess < num :
print("too small")
else :
print("恭喜中奖100万")
exit()
else:
print("game over")
""”
# 方法2:
import random
x = random.randint(1,100)
print(x)
trycount = 0
while trycount < 5:
tk = int(input("你猜:"))
if tk == x:
print("恭喜中奖100万")
break
elif tk < x:
print("too small")
trycount += 1
else:
print("too big")
trycount += 1
else:
print("没有机会")
###while死循环###
"""
while True:
pass
while 1: # bool(1)
pass
while 2>1:
pass
"""
####字符串的特性#####
# 索引
```
>>> s = "hello"
# 正向索引
>>> s[1]
'e'
>>> s[0]
'h'
>>> s[4]
'o'
# 反向索引
>>> s = "hello world"
>>> s[-1]
'd'
>>> s[-2]
'l'
>>> s[-3]
'r'
```
# 切片
s[start:end:step] # 从start开始到end-1结束, 步长为step;
- 如果start省略, 则从头开始切片;
- 如果end省略, 一直切片到字符串最后;
s[1:]
s[:-1]
s[::-1] # 对于字符串进行反转
s[:] # 对于字符串拷贝
# 成员操作符
```
>>> s = "hello"
>>> 'h' in s
True
>>> 'hel' in s
True
>>> 'oo' in s
False
>>> 'h' not in s
False
>>> 'oo' not in s
True
```
# 字符串连接
```
>>> a = "hello"
>>> b = "python"
>>> print("%s %s" %(a, b))
hello python
>>> a + b
'hellopython'
>>> a + " " +b
'hello python'
```
# 字符串的重复
```
>>> print("*"*10 + "学生管理系统" + "*"*10)
**********学生管理系统**********
####字符串常用方法_大小写####
```
"""
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper'
lower, upper, title
##istitle():如果字符串是一个可标题化的字符串,并且至少有一个字符,把单词的第一个字母大写,则该方法返回true,否则返回false。
>>> "Hello".istitle()
True
>>> "hello".istitle()
False
>>> "HelloWorld".istitle()
False
>>> help("HelloWorld".istitle)
>>> "hello".upper() #转换为大写#
'HELLO'
>>> "heLlo".lower() #转换为小写#
'hello'
>>> "heLlo".title() #返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写#
'Hello'
>>> "heLlo".swapcase() #小写变大写,大写变小写#
'HElLO'
"""
###特性练习,回文数判断###
"""
## 题目要求:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样
的整数。
## 示例:
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
"""
num = input('Num:');print(num == num[::-1])
# "121" == "121"
# "-121" == "121-"
# "10" == "01"
###字符串-开头和结尾匹配####
"""
endswith
startswith
"""
filename = "hello.log"
if filename.endswith(".log"):
print(filename)
else:
print("error file")
url1 = "file:///mnt"
url2 = "ftp://172.25.254.250/pub/"
url3 = "http://172.25.254.250/index.html"
if url1.startswith("http://"):
print("爬取网页.......")
else:
print("不能爬取网页")
###字符串-去掉左右两边空格####
"""
strip
lstrip
rstrip
# 注意: 去除左右两边的空格, 空格为广义的空格, 包括: \n, \t, \r
>>> s = " hello "
>>> s.strip()
'hello'
>>> s.lstrip()
'hello '
>>> s.rstrip()
' hello'
>>> s = "\nhello "
>>> s.strip()
'hello'
>>> s = "\thello "
>>> s.strip()
'hello'
>>> s = "helloh"
>>> s.strip('h')
'ello'
>>> s.strip('he')
'llo'
>>> s.lstrip('he')
'lloh'
center, ljust, rjust
>>> print("学生管理系统".center(50, '*'))
****************学生管理系统****************
>>> print("学生管理系统".ljust(50, '*'))
学生管理系统********************************
>>> print("学生管理系统".rjust(50, '*'))
********************************学生管理系统
"""
####字符串练习-判断变量名是否合法####
"""
# 变量名是否合法?
# #
# # 变量名可以由字母,数字或者下划线;
# # 变量名只能以字母或者下划线开头;
#
# s = "hello@"
#
# 1. 判断变量名的第一个元素是否为字母或者下划线; s[0]
# 2. 如果第一个元素符合条件, 判断除了第一个元素的其他元素;s[1:]
"""
# 1. 变量名的第一个字符是否为字母或者下划线?
# 2. 如果是, 继续判断(****);---参考4
# 3. 如果不是, 报错, 不合法;
# 4. 依次判断除了第一个字符之外的其他字符;
# 5. 判断是否为字母数字或者下划线
# eg: "h@ello@"
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))
####字符串练习-菱形####
"""
编写程序, 输出星号组成的菱形.
练习知识点:
for循环, 字符串center, 字符串重复
"""
#
n = int(input('Num:'))
for i in range(1,n):
print(('* '*i).center(3*n))
for i in range(n,0,-1):
print(('* '*i).center(3*n))
####字符串的搜索和替换###
"""
find:
replace:
count:
>>> s = "hello python , learn python"
>>> s.find('python')
6
>>> s.rfind('python')
21
>>> s.replace('python', 'linux')
'hello linux , learn linux'
>>> s
'hello python , learn python'
>>> s1 = s.replace('python', 'linux')
>>> s1
'hello linux , learn linux'
>>> s
'hello python , learn python'
>>> s.count("python")
2
>>> s.count("p")
2
>>> s.count("i")
0
"""
####字符串的分离和拼接####
"""
split:
join:
>>> ip = "172.25.254.19"
>>> ip1 = "1172.25.254.19"
>>> help(ip1.split)
>>> ip1.split('.')
['1172', '25', '254', '19']
>>> date = "2018-2-30"
>>> date.split("-")
['2018', '2', '30']
>>> date.replace('-', '/')
'2018/2/30'
>>> ip = ['1172', '25', '254', '19']
>>> "".join(ip)
'11722525419'
>>> ":".join(ip)
'1172:25:254:19'
>>> "*".join(ip)
'1172*25*254*19'
"""
####python的常用内置方法#####
"""
>>> min(2,4)
2
>>> max(2,5)
5
>>> sum(range(1,101))
5050
>>> sum(range(2,101,2))
2550
>>> sum(range(1,101,2))
2500
# 枚举: 返回索引值和对应的value值;
>>> for i,v in enumerate('hello'):
... print(str(i) +" -----> " + v)
...
0 -----> h
1 -----> e
2 -----> l
3 -----> l
4 -----> o
# zip
>>> s1 = 'abc'
>>> s2 = "123"
>>> for i in zip(s1,s2):
... print(i)
...
('a', '1')
('b', '2')
('c', '3')
>>> for i in zip(s1,s2):
... print("".join(i))
...
a1
b2
c3
>>> for i in zip(s1,s2):
... print("-".join(i))
...
a-1
b-2
c-3