李二蛋 发表于 2022-3-27 22:20:05

函数中无法使用input()么

0.
>>> x = 1
>>> def q():
        x = input('请输入:')

       
>>> q()
请输入:2
>>> x
1
为什么x不发生改变

1.
>>> def judge():
        while True:
                if int(num) != 11:
                        num = input('长度不对重新输入:')
                else:
                        break

               
>>> num = 11
>>> judge()
Traceback (most recent call last):
File "<pyshell#342>", line 1, in <module>
    judge()
File "<pyshell#340>", line 3, in judge
    if int(num) != 11:
UnboundLocalError: local variable 'num' referenced before assignment
>>> num = 13
>>> judge()
Traceback (most recent call last):
File "<pyshell#344>", line 1, in <module>
    judge()
File "<pyshell#340>", line 3, in judge
    if int(num) != 11:
UnboundLocalError: local variable 'num' referenced before assignment
请问出错在哪?

感谢各位前辈{:5_91:}

isdkz 发表于 2022-3-27 22:27:30

第一个问题:要声明全局变量才可以改变全局变量

def q():
      global x
      x = input('请输入:')

第二个问题:在赋值之前 num 并不存在,而你在赋值之前用到了 num 来判断,你应该给 num 赋初值

def judge():
      num = 0
      while True:
                if int(num) != 11:
                        num = input('长度不对重新输入:')
                else:
                        break

李二蛋 发表于 2022-3-28 10:43:14

isdkz 发表于 2022-3-27 22:27
第一个问题:要声明全局变量才可以改变全局变量

def q():


>>> num = 0
>>> def judge():
        global num
        while True:
                if int(num) != 11:
                        num = input('长度不对重新输入:')
                else:
                        break
我二者结合一下,您看对么

isdkz 发表于 2022-3-28 10:45:39

李二蛋 发表于 2022-3-28 10:43
>>> num = 0
>>> def judge():
        global num


语法没有问题,至于逻辑有没有问题得看你的需求

李二蛋 发表于 2022-3-28 10:49:41

isdkz 发表于 2022-3-28 10:45
语法没有问题,至于逻辑有没有问题得看你的需求

>>> def judge(x):
      num = x
      while True:
                if int(num) != 11:
                        num = input('长度不对重新输入:')
                else:
                        break
前辈我这样写是不是逻辑就通顺多了

isdkz 发表于 2022-3-28 11:00:09

李二蛋 发表于 2022-3-28 10:49
>>> def judge(x):
      num = x
      while True:


判断长度为什么用 int?

李二蛋 发表于 2022-3-29 16:56:13

isdkz 发表于 2022-3-28 11:00
判断长度为什么用 int?

您说的对哈
页: [1]
查看完整版本: 函数中无法使用input()么