Python学习笔记-18(函数小案例,小练习题等)

2023.4.26

努力学习python,想为以后可以有一份额外收入,如果有大神可以指点一下,我将不胜感激 

如果有大神想以后拥有一个合作伙伴进行交流,我会尽力赶上您的脚步!

一个小题我是在其他网站上做的,我感觉适合初学者,拿来做一下小案例记录一下

1.逻辑判断  小试牛刀!

#题目要求:
#1.给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
#举例:
'''
输入:num = 8
输出:4
解释:
步骤 1) 8 是偶数,除以 2 得到 4 。
步骤 2) 4 是偶数,除以 2 得到 2 。
步骤 3) 2 是偶数,除以 2 得到 1 。
步骤 4) 1 是奇数,减 1 得到 0 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-steps-to-reduce-a-number-to-zero
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
'''
#使用函数题解
def numberOfSteps(num):
    i = 0
    while True:
        if num % 2 == 0 and num > 0:  #判断偶数奇数,然后做出相应的动作,并添加一次次数
            num = int(num / 2)
            i += 1
        if num % 2 != 0 and num > 0:
            num -= 1
            i += 1
        if num <= 0:     #当数值等于0或小于0则停止循环
            break
    return i

 2.加入购物车,判断用户是否登录案例

#如果登录,成功加入购物车,否则提示登录只会添加,成功True,不成功False,使用函数
简易的判断登录
islogin = False    #初始值,判断是否登录的变量,默认未登录


def add_shoppingcart(goodsName):    #加入购物车
    if islogin and goodsName:      #登录了怎么样     两者都为True才可以
        pass
        print('成功将{}加入到购物车!'.format(goodsName))      #且goodsName必须有值
    else:           #未登录怎么样
        print('用户没有登录或没有添加任何商品!')

def login(username,password):         #只要用户开始登录,就进入这个函数
    if username == 'admin' and password == '123456':   #登录成功
        print('登录成功')  #只输出成功没有用,需要改变外面的值,输出值,所以添加返回值
        return True
    else:
        print('用户名或者密码错误')
        return False

#那么简易的登录系统做好了,那么需要做循环,输入错误后需要循环,如何?按照上面的代码,进行改写

 

#加大一点难度,需要判断循环是否登录
islogin = False    #初始值,判断是否登录的变量,默认未登录


def add_shoppingcart(goodsName):    #加入购物车
    global islogin
    if islogin:      #将判断登录与判断购物分开判断
        if goodsName:    #判断登录成功且加入了商品
            print('成功将{}加入到购物车!'.format(goodsName))      #且goodsName必须有值
        else:
            print('没有选中任何商品!')
    else:           #未登录怎么样
        answer= input('用户没有登录!是否登录用户?(y/n)')
        if answer == 'y':
            #重新登录
            for i in range(1,4):
                username = input('输入用户名:')
                password = input('输入密码:')
                islogin = login(username, password)  # 改变islogin值  #在这里加入了islogin值后,上面的islogion会出错,怎么回事?
                                                    # 解决方法,在函数里面添加一个global islogin,因为函数体内无法给外部赋值
                # 问题,能不能调用login? 用一个函数调用另一个函数,因为他需要判断islogin
                if islogin == True:
                    print('登陆成功,islogin:{}'.format(islogin))
                    add_shoppingcart('{}'.format(shop[shopping]))
                    break
                else:
                    print('登陆失败,你还有{}/3次机会,islogin:{}'.format(i, islogin))

        else:
            print('很遗憾!不能添加任何商品!')

def login(username,password):         #只要用户开始登录,就进入这个函数
    if username == 'admin' and password == '123456':   #登录成功
        #print('登录成功')  #只输出成功没有用,需要改变外面的值,输出值,所以添加返回值
        return True
    else:
        #print('用户名或者密码错误')
        return False



#调用函数    添加商品到购物车中
shop = ['商品:','奶酪','奥里给','窝窝头']
print(shop)
username = input('输入用户名:')
password = input('输入密码:')
shopping = int(input('请选择你需要购买的物品,分别为1-3:'))
islogin = login(username,password)       #改变islogin的状态,账户密码正确则改变

add_shoppingcart('{}'.format(shop[shopping]))

 3.函数应用,写一个验证码登录案例

#思路分析
'''
用户登录
输入用户名
输入密码
输入验证码 --->封装成函数
'''
import random


def genertate_checkcode(n):               #随机验证码
    code = ''
    s = '0987654321qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
    for i in range(n):
        ran = random.randint(0,len(s)-1)
        code += s[ran]
    return code


def login():                             #登录函数,里面需要调用随机验证码函数
    username = input('请输入用户名:')
    password = input('请输入密码:')
    code = genertate_checkcode(4)         #调用函数,使用变量承接后,打印出来
    print('验证码是:',code)
    input_code = input('请输入验证码:')
    if input_code.lower() == code.lower():
        if username == 'admin' and password == '123456':
            print('登录成功!')
        else:
            print('账户或者密码错误')
    else:
        print('验证码错误')
#调用函数
login()

4.内部函数,全局变量与局部变量的使用 

#如何给lsit1里每个值增加5的操作
def func():
    #声明变量
    n = 100    #局部变量
    list1 = [3,4,5,1]     #局部变量

    #声明内部函数
    def inner_func():
        nonlocal n         #改变内部函数
        #对list1里面的值,全部增加5的操作
        for index, i in enumerate(list1):
            # 0   3
            list1[index] = i + n       #循环更改的只是n + i  下面的n并没有循环,不要被迷惑,该循环结束后n才会增加101

        list1.sort()

        #修改n变量
        n += 101

    inner_func()
    print(list1)
#调用函数
func()

以上为总结知识点,出自哔哩哔哩千峰宋如宁老师课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值