学习python-Day09

时间:2022-06-23
本文章向大家介绍学习python-Day09,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

今日学习内容

列题:

1.准确说出下列判断的结果
    v1 = 1 or 3
    v2 = 1 and 3
    v3 = 0 and 2 and 1
    v4 = 0 and 2 or 1
    v5 = 0 and 2 or 1 or 4
    v6 = 0 or False and 1 
1.分别是: 1, 3, 0, 1, 1, False
2.第三个问题容易出错,因为出现 0,在这里我们可以看成布尔值,也可以看成数据值,如果里面全是数据值,则得出的结果也是数据值。全是 and连接多个条件则先从左往右看。则最后得出数据值 and链接的结果取决于后面的数值。
3.第四个问题有 and和 or,没有括号的情况下,我们可以优先考虑 and,再考虑 or, 0 为 False也可以为数据值,后面 1为数据值也可以为 True。无论前面是 True 还是 False 取决于后面的 1 。
4.第五题可以看出有 and和 or 优先考虑 and 再看 or。类比第四题,我们就看 or的 1 和 4 均为 True,则 or 是取决于前面的数,前面为 True, 就不用看后面了。
'''注意:
逻辑运算符的优先级: () > and > or  '''
2.编写一个用户登录程序
	用户如果登录失败 则只能尝试三次
    用户如果登录成功 则直接结束程序
    
1.先明确主体功能>>>:登录
2.先按照登录的逻辑编写
3.再去思考其他的附加功能(尝试三次,先尝试无穷次,再想这么变成三次)
4.最后补一个简单的强制结束

#设置初始次数为1
count = 1
while count < 4:
    #获取用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    #判断是否正确,正确,结束本循环
    if username == 'xz' and password == '123':
        print('ok')
        break
        #如果密码不正确,则循环次数加一
    else:
        print('no')
        count += 1

#方法二:

count = 1
while True:
    #直接判断次数是否达到4次
    if count == 4:
        break
    username = input('username>>>:')
    password = input('password>>>:')
    if username == 'xz' and password == '123':
        print('ok')
        break
    else:
        print('no')
        count += 1
方法三:
count = 1
while count < 5:
    name = input('username>>>:')
    qwd = input('password>>>:')
    if name == 'xz' and qwd == '1823':
        print("成功!!!")
        break
    else:
        print("用户登录错误,你还有%s 次登录机会" % (4 - count))
        count += 1
else:
    print("尝试三次错误,你已经没有机会!!!")


3.编写一个用户登录程序
	用户如果登录失败 可以无限制尝试
	用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
    	eg: 用户输入cmd指令 则程序打印正在执行您的指令:cmd'
	给用户提供一个退出命令 用户一旦输入则退出整个程序
    	eg: 用户输入q指令 则程序先打印该指令再结束

while True:
    uname = input('uname>>>:')
    pwd = input('pwd>>>:')
    if uname == 'xz' and pwd == '123':
        print('ok!!!')
        #可以无限输入指令并打印
        while True:
            cmd = input('请输入您的指令>>>:')
            #当输入 q 时,退出当前循环,后再退出大循环。
            if cmd == 'q':
                print('欢迎下次光临')
                break
            print('正在执行您的命令:%s' % cmd)
        break
    #退出大循环后,因为是循环是强制性退出循环,则不会执行else子代码。
    else:
        print('用户名或密码错误')
4.编写猜年龄的游戏(拔高练习 尝试编写)
	用户有三次猜测的机会 如果用完则提示用户是否继续尝试
	用户输入y则继续给三次机会 如果用户输入q则直接结束程序
#先定义一个正确的年龄
real_age = 24
#再定义一个计数器
count = 1
#先加个循环,无限
while True:
    #判断当前是第几次猜
    if count == 4:
        #当猜测4次,没机会了,所以获取用户是否继续游戏
        choice = input('no!!!so much!!(y/n)>>>:')
        #判断用户输入的关键字,y继续,n退出
        if choice == 'y':
            #重新开始,这次数也要重新定义为1
            count = 1
        else:
            print('no!!!!')
            break
    #获取用户信息--猜测的年龄
    guess_age = input('guess_age>>>:')
    guess_age = int(guess_age)

    if guess_age > real_age:
        print('猜错了哦,我年龄没那么大的')
        count += 1
    elif guess_age < real_age:
        print('猜错了哦,我年龄没那么小的')
        count += 1
    else:
        print('好耶 猜对了 你真棒!!!')
        break

方法二:
# 这是设置循环次数
while count < 4:
    # 这是计算机随机数设置
    computer = random.randint(0, 21)
    if age == computer:
        print("猜对了!!!")
        # 猜对就结束本循环
        break
        # 猜错要另外考虑输入格式’y‘和’n‘的问题
    else:
        print("你已经猜错了%s次,最多猜%s次" % (count, 3 - count))
        count += 1

        # 获取用户输入
        key = input("是否继续游戏(y/n):")
        if key == 'y':
            age = input("输入年龄>>>:")
            computer = random.randint(0, 21)
            if age == computer:
                print("猜对了!!!")
                break
        if key == 'n':
            break
     # 验证一些用户的输入值是否超过三次,超过就结束
    if count % 3 == 0:
        key = input("你已经猜错三次,没有机会猜了!!!是否继续'y'/'n':")
        if key == 'y':
            count = 1
            age = input("输入年龄>>>:")
            computer = random.randint(0, 21)
            if age == computer:
                print("猜对了!!!")
                break
        if key == 'n':
            print('你已退出')
            break

循环结构之for循环

1.while 循环打印出列表每个数据值。

     l1 = ['jason', 'kevin', 'tony', 'oscar']
     num = 0
     while num < 4:
         print(l1[num])  # 每次循环的时候索引应该自增1
         num += 1
        
2. for 循环打印出列表的数据值。
     for i in l1:
        print(i)
        
3.while和 for循环打印的区别在于 for循环语法更简单,多用于循环取值,代码量更简化。
  while 与 for 还有些区别,在于 while 需要后面条件不符合或者关键字强制退出循环( break , continue),而 for 只需要循环完代码就自动退出循环。
    
    
4.注意 python2 和 python3 中 print(i) 是有区别的。

当用 python3 时
>>> print(range(10))
range(0, 10)

当用 python2 时
>>> print(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
而将 python2 转换另一种输出时
>>> print(xrange(10))
xrange(10)
结果相当于python3中的输出效果。

5.在python2中 range方法得到的结果就是一个确定的列表对象,列表对象所拥有的方法,range方法生成的结果对象都可以直接使用。
6.而在python3中 range方法得到的对象是一个迭代器而不是一个确定的列表,如果想要转化为列表对象则需要再使用 list方法进行转化。但python3节省了内存。

1.语法结构:
      for 变量名 in 可迭代对象:
           (for 循环体代码)
 '''迭代对象为:字符串,列表,字典,元组,集合'''

2. 列表取值:索引
     l1 = ['jason', 'kevin', 'tony', 'oscar']
     for i in l1:
         print(i)
            
'''
jason
kevin
tony
oscar'''
打印出列表的最小单位为数据值的整体,不能拆分。

3.字典取值:按K取值
user_dict = {
         'username': 'jason',
         'pwd': 123,
         'age': 18
     }     
     for i in user_dict:
         print(i)
'''
username
pwd
age
'''
for循环字典, 默认只能取到字典的key,不能取出V具体数据值。


4.字符串取值:单个字符,依次顺序取值。
desc = 'hello'    
for i in desc:
   print(i)
'''
h
e
l
l
o
'''
for循环字符串, 默认每次取单个字符。

5.元组取值:索引
 t = (11, 22, 33, 44) 
 for i in t:
     print(i)
"""
11
22
33
44
"""
for循环元组数据与列表一致 ,取值都是单个数据值。

6.集合取值:索引
s1 = {1,2,3,4,5}
for i in s1:
    print(i)
'''
1
2
3
4
5
'''
for循环集合数据与列表一致 ,取值都是单个数据值。

for重要知识

1.range方法
如果要遍历数字序列,可以使用内置range()函数,它会生成数列。
range可以看成是一个能够帮助我们快速产生一个包含多个数据值的列表

2.for i in range(5): 
    print(i)
如果括号内只有一个数字,那么就是从0开始到数字减一结束
(顾头不顾尾 左包含右不包含)

3.for i in range(2,10):
      print(i)
括号内有两个数字,第一个是起始位置(包含) 第二个是终止位置(不包含)

4.for i in range(0, 100, 25): 
    print(i)
括号内有三个数字,最后一个是数据的间隔数(相当于等差数列)

range方法实操

网络爬虫:python代码模拟网络请求获取数据

方式一:
博客园多页规律
	https://www.cnblogs.com/  第一页
    https://www.cnblogs.com/#p2  第二页
    https://www.cnblogs.com/#p3  第三页
    https://www.cnblogs.com/#p4  第四页
这是规律,网址最后一个字符不同,可以利用这一规律,循环取值。
提前定义好一个模板:
base_url = 'https://www.cnblogs.com/#p%s'
for i in range(1, 101):
    print(base_url % i)
结果就是循环打印出每页的网址。

for+break/continue/else

1.如果使当 i == 7 时结束,则需要用到 break。
for i in range(1,11):
    if i == 7:
        break
    print(i)
break也能够结束所在的那一层 for循环。

2.如果使当i == 7 时跳过,不影响下次循环,则用到 continue
for i in range(1, 11):
    if i == 7:
        continue
    print(i)

continue也能够结束所在的那一次for循环 直接开始下一次循环。

3.
for i in range(10):
    print(i)
    if i == 5:
        break
else:
    print('结束执行')
else配合 for一起使用。
当 for循环没有被强制结束的情况下,循环体结束之后运行 else子代码。


作业04

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

sum1 = 0
for i in range(1, 101):
    sum1 = sum1 + i
print(sum1)

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:
        c = l1.count(i)
       # count += 1
print(c)
# print(count)

3.编写代码自动生成所有页网址
https://movie.douban.com/top250

desc = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 251, 25):
    print(desc % i)

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

for i in range(4):
    for j in range(5):
        print('*', end='')
    print()

原文地址:https://www.cnblogs.com/bjyxxc/p/16406455.html