鱼C论坛

 找回密码
 立即注册
查看: 2325|回复: 9

函数嵌套问题 谢谢

[复制链接]
发表于 2020-2-18 22:46:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 mcdmcd 于 2020-2-18 23:17 编辑
  1. import random

  2. islogin = False  # 用于判断用户有没有登陆的变量   默认没有登陆


  3. # 添加购物车
  4. def add_shoppingcart(goodsName):
  5.     while not islogin:
  6.         if islogin:
  7.             if goodsName:
  8.                 # 登录的
  9.                 print('成功将{}加入购物车中!'.format(goodsName))
  10.             else:
  11.                 print('没有选中任何商品!')
  12.         else:
  13.             # 没有登陆
  14.             answer = input('用户没有登录!是否登录用户?(y/n)')
  15.             if answer == 'y':
  16.                 login()
  17.             else:
  18.                 print('很遗憾!不能添加任何商品!')


  19. # 生成输验证码
  20. def generate_checkcode(n):
  21.     s = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
  22.     code = ''
  23.     for i in range(n):
  24.         ran = random.randint(0, len(s) - 1)
  25.         code += s[ran]
  26.     return code


  27. # 登陆
  28. def login():
  29.     global islogin
  30.     while not islogin:
  31.         username = input('请输入用户名')
  32.         password = input('请输入密码:')

  33.         code = generate_checkcode(4)
  34.         print('验证码是:', code)
  35.         code1 = input('请输入验证码:')
  36.         if code.lower() == code1.lower():
  37.             if username == 'lijiaqi' and password == '123456':
  38.                 print('用户登录成功')
  39.                 islogin = True
  40.                 break

  41.             else:
  42.                 print('用户名或密码有误!')
  43.         else:
  44.             print('验证码输入有误!')


  45. # 添加购物车
  46. add_shoppingcart('阿玛尼唇釉')
复制代码


我是不是循环用错地方了?   为什么即使用户名密码正确也是一直不能添加成功呢?

谢谢各位!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-18 22:52:13 | 显示全部楼层
你的函数调用呢?代码发全一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 22:54:16 | 显示全部楼层
Stubborn 发表于 2020-2-18 22:52
你的函数调用呢?代码发全一点

就是这些啊   添加购物车调用的登陆    登陆调用的验证码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 22:57:18 | 显示全部楼层
本帖最后由 Stubborn 于 2020-2-18 22:59 编辑
mcdmcd 发表于 2020-2-18 22:54
就是这些啊   添加购物车调用的登陆    登陆调用的验证码


把login的return去掉,你返回一个bool干嘛
函数内部修改全局变量就不再说了

还有,你login登录后,判断为while not islogin同样也加不了,改下逻辑
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 22:58:53 | 显示全部楼层
Stubborn 发表于 2020-2-18 22:57
把login的return去掉,你返回一个bool干嘛
函数内部修改全局变量就不再说了

这个在前边已经声明是全局变量了    而且只有当登陆成功了才能添加购物车的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 23:00:51 | 显示全部楼层
mcdmcd 发表于 2020-2-18 22:58
这个在前边已经声明是全局变量了    而且只有当登陆成功了才能添加购物车的啊

第一,去掉return, 直接修改。直接return是返回一个bool,并不会修改变量
第二,while not islogin 逻辑会有问题,也要修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 23:07:19 | 显示全部楼层
Stubborn 发表于 2020-2-18 23:00
第一,去掉return, 直接修改。直接return是返回一个bool,并不会修改变量
第二,while not islogin 逻辑 ...

好的  我试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 23:14:36 | 显示全部楼层
Stubborn 发表于 2020-2-18 23:00
第一,去掉return, 直接修改。直接return是返回一个bool,并不会修改变量
第二,while not islogin 逻辑 ...

不行  只是到用户登陆成功   还是无法添加购物车
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 00:22:09 | 显示全部楼层
mcdmcd 发表于 2020-2-18 23:14
不行  只是到用户登陆成功   还是无法添加购物车

看下你wile部分,是怎么修改的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 00:27:51 | 显示全部楼层
#你的问题在于while not islogin。当你login以后,not islogin是False,所以后面的语句不会执行。 我已经帮你改过来了,你再试试!
  1. import random

  2. islogin = False  # 用于判断用户有没有登陆的变量   默认没有登陆

  3. # 添加购物车
  4. def add_shoppingcart(goodsName):
  5.     while True:
  6.         if islogin:
  7.             if goodsName:
  8.                 # 登录的
  9.                 print('成功将{}加入购物车中!'.format(goodsName))
  10.             else:
  11.                 print('没有选中任何商品!')
  12.             break
  13.         else:
  14.             # 没有登陆
  15.             answer = input('用户没有登录!是否登录用户?(y/n)')
  16.             if answer == 'y':
  17.                 login()
  18.             else:
  19.                 print('很遗憾!不能添加任何商品!')


  20. # 生成输验证码
  21. def generate_checkcode(n):
  22.     s = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
  23.     code = ''
  24.     for i in range(n):
  25.         ran = random.randint(0, len(s) - 1)
  26.         code += s[ran]
  27.     return code


  28. # 登陆
  29. def login():
  30.     global islogin
  31.     while not islogin:
  32.         username = input('请输入用户名')
  33.         password = input('请输入密码:')

  34.         code = generate_checkcode(4)
  35.         print('验证码是:', code)
  36.         code1 = input('请输入验证码:')
  37.         if code.lower() == code1.lower():
  38.             if username == 'lijiaqi' and password == '123456':
  39.                 print('用户登录成功')
  40.                 islogin = True
  41.                 break

  42.             else:
  43.                 print('用户名或密码有误!')
  44.         else:
  45.             print('验证码输入有误!')


  46. # 添加购物车
  47. add_shoppingcart('阿玛尼唇釉')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 15:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表