米斯特尔.D 发表于 2021-10-31 18:58:43

我是新手求大佬解答

for each in passwd:
    if each in symbols:
      flag_con += 1
      break
上边没有对flag_con赋值为什么不报错

f=0
num='12345dfdss'
char=
for i in num:
    if i in char:
      f+=1
if f>1:
    print('love')
这个为什么错了
#这是python小甲鱼第14讲

redforce 发表于 2021-10-31 19:05:39

单独运行的话,第一个程序,flag_con 没有定义,会报错的;第二个程序不会报错
你现在是第一个不报错,那么你就看看flag_con 在前面有没有定义,理论上是应该有定义的
第二个程序报错应该不是变量没有定义引起的,具体要看错误

大马强 发表于 2021-10-31 19:06:11

因为遍历的结果是字符

米斯特尔.D 发表于 2021-10-31 19:07:03

redforce 发表于 2021-10-31 19:05
单独运行的话,第一个程序,flag_con 没有定义,会报错的;第二个程序不会报错
你现在是第一个不报错,那 ...

第二个没有报错但他运行不出来

米斯特尔.D 发表于 2021-10-31 19:07:39

米斯特尔.D 发表于 2021-10-31 19:07
第二个没有报错但他运行不出来

这是为什么

redforce 发表于 2021-10-31 19:11:53

米斯特尔.D 发表于 2021-10-31 19:07
这是为什么

for i in num-------i拿到的值是str类型
char这个列表中的元素是int类型,所以判断i都不在列表中,f就不会加1
最终f的值依然是0,把char那个列表改一下就可以
f=0
num='12345dfdss'
char=['1','2','89']
for i in num:
   if i in char:

      f+=1
print(f)
if f>1:
    print('love')

jackz007 发表于 2021-10-31 19:12:32

本帖最后由 jackz007 于 2021-10-31 19:15 编辑

       没有报错的原因是 passwd 当中没有包含到 symbols 中的字符,因而 flag_con += 1 没有被执行到,一旦执行到,是铁定会报错的。
       Python 规定,变量必须先定义,然后才能使用,而定义的方法就是赋值。

傻眼貓咪 发表于 2021-10-31 19:13:02

米斯特尔.D 发表于 2021-10-31 19:07
第二个没有报错但他运行不出来

一个是字符,一个是整数,f 永远是 0 啊大哥
页: [1]
查看完整版本: 我是新手求大佬解答