作业讲解

# 1.
# 准确说出下列判断的结果(不要执行代码)
v1 = 1 or 3     # 1
v2 = 1 and 3    # 3
v3 = 0 and 2 and 1   # 0
v4 = 0 and 2 or 1  # 1  优先级:()>not>and>or
v5 = 0 and 2 or 1 or 4  # 1
v6 = 0 or False and 1  #False
#eg:
n1=0 or 1  # 1
n2=v1 or 0  # 1
n3=0 and 1 # 0
n4= 1 and 0  # 0
n5=0 or 3  # 3
n6=3 or 0  # 3
n7=1 or 3  # 1
n8=3 or 1  # 3
n9=3 or 4  # 3
n10=4 or 3  #4


# 2.
# 编写一个用户登录程序
# 用户如果登录失败
# 则只能尝试三次
# 用户如果登录成功
# 则直接结束程序
#3.用while进行循环嵌套
count = 0
while count < 3:
    # 1.获取用户名密码
    username = input("username>>>:")
    password = input("password>>>:")
    # 2.判断用户名密码是否正确
    if username =='nana' and password =='123':
        print("登录成功")
        break # 登录成功 结束程序
    else:
        print("登录失败")
        count += 1

# 3.
# 编写一个用户登录程序
# 用户如果登录失败
# 可以无限制尝试
# 用户如果登录成功
# 则进入内层循环
# 获取用户输入的指令
# 并打印该指令
# eg: 用户输入cmd指令
# 则程序打印
# '正在执行您的指令:cmd'
# 给用户提供一个退出命令
# 用户一旦输入则退出这个程序
# eg: 用户输入q指令
# 则程序先打印该指令再结束
#
# 1.用户登录获取用户名密码
while True:
    username = input("username>>>:")
    password = input("password>>>:")
    # 2.判断用户名密码是否正确
    if username =='nana' and password =='123':
        print("登录成功 欢迎光临")
        # 3.获取用户指令
        while True:
            cmd = input("请输入你的指令:")
            if cmd =='q':
                print("欢迎下次光临")
                break
            print("正在执行您的指令:%s" %cmd )
        break
    else:
        print("用户名或密码错误 再试一次")



# 4.
# 编写猜年龄的游戏(拔高练习
# 尝试编写)
# 用户有三次猜测的机会
# 如果用完则提示用户是否继续尝试
# 用户输入y则继续给三次机会
# 如果用户输入q则直接结束程序

# 1.定义真实年龄
real_age = 23
# 4.用while循环
count = 0
while True:
    # 5.判断第四次是否继续尝试
    if count == 3 :
        choice = input("是否继续猜年龄>>>(y/n):")
        if choice == 'y':
            count = 0
        else:
            print("欢迎下次继续")
            break
    # 2.获取猜测的年龄
    guess_age = input("请输入你猜测的年龄>>>:")
    guess_age = int(guess_age)  # 转换为整型
    # 3.判断是否猜正确
    if real_age == guess_age:
        print("猜对了")
        break  # 猜对跳出循环
    elif real_age >= guess_age:
        print("猜小了")
        count += 1

    else:
        print("猜大了")
        count += 1

循环结构之for循环

1.前戏
    # 循环打印l1里面的名字 l1 = ['jason', 'kevin', 'tony', 'oscar']
    l1 = ['jason', 'kevin', 'tony', 'oscar']
    #while 方法
    i = 0
    while i<=3:
        print(l1[i])
        i += 1

    # for方法
    for i in l1:
        print(i)
     """for循环能够做的事情while 也可以做
     	for循环的语法结构更加简单 尤其是更加擅长循环取值"""
2.语法结构
	for 变量名 in 可迭代对象:  # 字符串 列表 字典 元组
		for循环的循环体代码
     """
     变量名的命名:
     	如果带取值的数据有明确的指向,最好见名知意 
     	如果没有明确的指向 可以使用常见的字母 eg:i j item等等
     """
3.常见的取值操作
    1. 列表
    # 循环打印出列表中每一个数据值 l1 = ['jason', 'kevin', 'tony', 'oscar']
    l1 = ['jason', 'kevin', 'tony', 'oscar']
    # 用while循环
    i = 0
    while i < 4:
        print(l1[i])
        i += 1
    # 用for循环
    for i in l1:
        print(i)
    
    2. 字典
	user_dict = {
        'username': 'jason',
        'pwd': 123,
        'age': 18
     	}
	for i in user_dict:
    	print(i)
	"""for循环只能取到字典里面的key"""
    
    3.字符串
    st = "nihao xiaoxiao  加油!!!"
	for i in st:
    	print(i)
	"""for循环字符串 默认每次去单个字符"""
    
    4.元组
	tp= (11,22,33,44,55)
	for i in tp:
    	print(i)
	"""for循环元组数据与列表一致 默认都是单个数据值"""
    
    5.集合
    s1 ={1,2,3,4,5}
	for i in s1:
    	print(i)
    """for循环集合 默认返回单个数据"""

for循环重要知识

1.range 方法(三种用法)
	range可以看成是一个能够帮助我们快速产生一个包含多个数据值的列表
1.for i in range(n):  # 如果括号内有一个数字,那么返回的数字就是0到n-1
        print(i)
    2.for i in range(m,n): # 如果括号内有两个数字,那么返回的数字就是m到n-1(左闭右开)
		print(i)
    3.for i in range(m,n,k): # 如果括号内有三个数字,那么返回的数是m,m+k,m+2k,m+3k(等差数列)
		print(i)
2.range在python2与python3差异
	在python2中有两个
    	range():直接产生一个列表 当数据很大的时候可能会造成内存爆满
         xrange():就是python3里面的range方法
    在python3中
    	range():类似于是一个工厂 什么时候要什么时候创建  节省内存

range方法实操

网络爬虫:python代码模拟网络请求获取数据
很多网页的数据都不止一页 所以有时候需要通过代码模拟
eg:博客多页规律
"""
  第二页
  第三页
  第四页
"""
base_url=""
for i in range(1,101):
    print(base_url % i)

for +break

# 1-10  7结束
for i in range(1,10):
    if i == 7:
        break # break也能够结束所在那一层for循环
    print(i)

for +continue

# 1-10  7跳过
for i in range(1,10):
    if i == 7:
        continue  # continue也能够结束所在的那一层for循环 直接开始下一次
    print(i)

for +else

for i in range(10):
    print(i)
else:
    print("行") # 0 1 2 3 4 5 6 7 8 9 行

for i in range(10):
    if i == 5:
        continue
    print(i)
else:
    print("行") # 0 1 2 3 4 6 7 8 9 行

for i in range(10):
	if i == 5:
        break
    print(i)
else:
    print("行")  # 0 1 2 3 4
"""else配合for一起使用 当for循环没有被强制结束的情况下(就是没有break) 循环体结束之后运行else子代码"""

作业

#1.计算1-100所有的数之和

# while方法
i =1
sum =0
while i <= 100:
    sum += i
    i += 1
print(sum)

# for方法
sum = 0
for i in range(1,101):
    sum += i
print(sum)

#2.判断列表中数字2出现的次数:l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
count = 0
for i in l1:
    if i == 2:
        count += 1
        continue
print(count)

#3.编写代码自动生成所有页网址:https://movie.douban.com/top250
#  第一页 https://movie.douban.com/top250?start=0&filter=
# 第二页 https://movie.douban.com/top250?start=25&filter=
# 第三页 https://movie.douban.com/top250?start=50&filter=
# 第四页 https://movie.douban.com/top250?start=75&filter=
base_url = "https://movie.douban.com/top250?start=%s&filter="
for i in range(0,250,25):
    print(base_url % i)

# 4.编写代码打印出下列图形(ps:for循环嵌套)
# 	*****
# 	*****
# 	*****
# 	*****

for i in range(4):
    print("*****")