Python 函数不返回已转换的变量类型
我有一个赋值,并创建了一个名为Python 函数不返回已转换的变量类型,python,function,if-statement,Python,Function,If Statement,我有一个赋值,并创建了一个名为cycle\u convert(variable,n)的函数,该函数根据步长n转换变量的类型。我在Python中有以下固定的类型顺序: int→ 浮动→ 布尔→ 一串→ 复杂的 例如,我有一个变量number=10,通过我的函数cycle\u convert(number,2)可以将类型从int更改为bool。它也适用于环绕和负步长 我有完成这些任务的代码,但在返回变量时,即使函数对其进行转换,转换后的类型似乎不会返回,并且变量number仍然是int。我的代码如下
cycle\u convert(variable,n)
的函数,该函数根据步长n
转换变量的类型。我在Python中有以下固定的类型顺序:
int→ 浮动→ 布尔→ 一串→ 复杂的
例如,我有一个变量number=10
,通过我的函数cycle\u convert(number,2)
可以将类型从int
更改为bool
。它也适用于环绕和负步长
我有完成这些任务的代码,但在返回变量时,即使函数对其进行转换,转换后的类型似乎不会返回,并且变量number
仍然是int
。我的代码如下:
def cycle_convert(x, n=1):
if type(x) == int:
num = 1
elif type(x) == float:
num = 2
elif type(x) == bool:
num = 3
elif type(x) == str:
num = 4
elif type(x) == complex:
num = 5
prev_type = type(x)
final_num = num + n
while final_num not in range(1,6):
if final_num <1:
final_num = 5 + final_num
if final_num >5:
final_num = final_num - 5
if final_num == 1:
x = int(x)
elif final_num == 2:
x = float(x)
elif final_num == 3:
x = bool(x)
elif final_num == 4:
x = str(x)
elif final_num == 5:
x = complex(x)
print('Your variable type has been changed from ', prev_type, 'to ', type(x), ': ')
return x
number = 10
cycle_convert(number, 2)
def循环_转换(x,n=1):
如果类型(x)==int:
num=1
elif类型(x)=浮动:
num=2
elif类型(x)=bool:
num=3
elif类型(x)=str:
num=4
elif类型(x)=复杂:
num=5
上一类型=类型(x)
最终数量=数量+n
当最终数量不在范围(1,6)内时:
如果最终数量为5:
最终数量=最终数量-5
如果final_num==1:
x=int(x)
elif final_num==2:
x=浮动(x)
elif final_num==3:
x=bool(x)
elif final_num==4:
x=str(x)
elif final_num==5:
x=复数(x)
打印('您的变量类型已从',prev_type'更改为',type(x),':')
返回x
数字=10
循环_转换(数字,2)
有人能解释一下为什么返回函数在这个例子中不起作用吗
谢谢我认为这是一个打字错误。您正在定义函数以获取参数p
和n
,其中n
的默认值为1。但稍后,在函数中,您将计算变量x
,这意味着调用函数时传递的p
永远不会生效。这应该起作用:
def cycle_convert(x, n=1):
if type(x) == int:
num = 1
elif type(x) == float:
num = 2
elif type(x) == bool:
num = 3
elif type(x) == str:
num = 4
elif type(x) == complex:
num = 5
prev_type = type(x)
final_num = num + n
while final_num not in range(1,6):
if final_num <1:
final_num = 5 + final_num
if final_num >5:
final_num = final_num - 5
if final_num == 1:
x = int(x)
elif final_num == 2:
x = float(x)
elif final_num == 3:
x = bool(x)
elif final_num == 4:
x = str(x)
elif final_num == 5:
x = complex(x)
print('Your variable type has been changed from ', prev_type, 'to ', type(x), ': ')
return x
number = 10
cycle_convert(number, 2)
def循环_转换(x,n=1):
如果类型(x)==int:
num=1
elif类型(x)=浮动:
num=2
elif类型(x)=bool:
num=3
elif类型(x)=str:
num=4
elif类型(x)=复杂:
num=5
上一类型=类型(x)
最终数量=数量+n
当最终数量不在范围(1,6)内时:
如果最终数量为5:
最终数量=最终数量-5
如果final_num==1:
x=int(x)
elif final_num==2:
x=浮动(x)
elif final_num==3:
x=bool(x)
elif final_num==4:
x=str(x)
elif final_num==5:
x=复数(x)
打印('您的变量类型已从',prev_type'更改为',type(x),':')
返回x
数字=10
循环_转换(数字,2)
输出:
Your variable type has been changed from <class 'int'> to <class 'bool'> :
您的变量类型已从更改为:
通过上述更改,并将函数结果添加到编号
中,您得到了正确的更改类型
def循环_转换(x,n=1):
如果类型(x)==int:
num=1
elif类型(x)=浮动:
num=2
elif类型(x)=bool:
num=3
elif类型(x)=str:
num=4
elif类型(x)=复杂:
num=5
上一类型=类型(x)
最终数量=数量+n
当最终数量不在范围(1,6)内时:
如果最终数量为5:
最终数量=最终数量-5
如果final_num==1:
x=int(x)
elif final_num==2:
x=浮动(x)
elif final_num==3:
x=bool(x)
elif final_num==4:
x=str(x)
elif final_num==5:
x=复数(x)
打印('您的变量类型已从',prev_type'更改为',type(x),':')
返回x
数字=10
数字=循环_转换(数字,2)#在此处更改
如果类型(x)=int:
则使用启动函数x
没有定义它(它在以前版本的内存中)如果函数接受输入p
为什么在函数中使用x
呢?如上所述,我建议查看对我来说工作得很好的函数,并做一些更改:将指令缩进函数定义中,将p
更改为x
的确,它们在我的代码中是正确的,并且运行良好,但是我的控制台中的数字类型仍然是int
。抱歉,这只是一个输入错误,实际上代码中是x。它可以工作,但是控制台中的数字类型仍然是int
,这是大量复制的代码,只是为了更改函数的标题。@geds133我只是在命令行上运行了它,没有任何问题。对您正在返回x
,不要期望number
的类型得到更新。如果这是你想要的,那是另一个需要解决的问题。让我知道,我会编辑我的答案,以便根据您使用的函数更新number
的类型。抱歉,我一定对返回函数在这里的作用感到困惑。当我以number=cycle\u convert(number,2)
的形式调用它时,它会覆盖变量,但返回值是否会覆盖此变量?否。检查此项以了解进一步的解释我明白了,那么很好,我的代码是正确的我误解了返回函数