python - 函数不返回转换后的变量类型
问题描述
我有一个任务,并创建了一个名为的函数,它根据步长的数量cycle_convert(variable, n)
转换 a 的类型。我在 Python 中有以下固定的类型顺序:int → float → bool → string → complexvariable
n
例如,我有变量number = 10
,并使用我的函数cycle_convert(number, 2)
将类型从 a 更改int
为 a 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)
谁能向我解释为什么 return 函数在这种情况下不起作用?
谢谢
解决方案
我相信这个问题是一个错字。您正在定义您的函数来接受一个参数,并且p
的默认值 = 1。但是稍后,在您的函数中,您正在评估一个变量,这意味着无论何时调用函数时传递的参数都不会生效。这应该有效:n
n
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)
输出:
Your variable type has been changed from <class 'int'> to <class 'bool'> :
推荐阅读
- django - 有没有办法在 django 中扩展创建的模型字段另一个模型?
- angular - Angular 6 基于角色的身份验证
- reactjs - 渲染后从 HTML 中删除自动播放
- mongodb - 如何聚合 ObjectId 对数组及其相关集合
- rest - 在 REST API 调用中,如果结果为空,我们应该返回什么
- node.js - 如何使用 MERN 堆栈应用程序上传对象数组,其中某些对象包含文件?
- javascript - 仅当变量包含值时才创建包含变量的数组
- jenkins - Plugin : Publisher over ftp 为什么 ftpPublisher 不知道管道环境中定义的全局变量
- reactjs - 在 useEffect 中调用 Redux Action
- jakarta-ee - 即使数据源出现故障,也要确保应用程序部署