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()
以上为总结知识点,出自哔哩哔哩千峰宋如宁老师课程