Python-3 数据类型转换-数字类型转换的实现

1 杂谈

Hello,又见面了。我很欣喜,因为我又增添了8位粉丝,现在我的粉丝数量为63个。很感谢大家的关注,你们的关注是对我的认可,也是我创作下去的动力。今天我带给大家的内容是数字类型转换的实现

2 问题提出

编写一个程序,要求用户输入一个数字,并分别将该数字转换为整数、浮点数和复数,输出转换后的结果。

3 问题分析

如果我们预定义了一个变量的值(定义了变量的值与类型),再进行转换,实际上是很简单的,例如:

x=1.3
x_int=int(x)
print(x_int)

因为一开始你已经确定了输入变量的数字类型。但此题中,这个数字是由用户键入的,变量的类型因此有了不确定性,所以键入后需要先判断类型,再进行类型转换。

3.1 用户输入

# 用户输入
x = input("请输入一个数字:")

在这里,我们键入一个数字,并将数字赋值给变量x。但此时要注意,input()这个函数输入的是字符串类型的数据,即使你输入的是3.1415926,x接收的变量值实际上是'3.1415926'。所以有接下来的一步–判断数字类型并转换

3.2 判断数字类型并转换

# 判断数字类型并转换
try:
    x = int(x)
    print("x一开始就是整数")
    x_float = float(x)
    x_complex = complex(x)
except ValueError:
    try:
        x = float(x)
        print("x一开始为浮点数")
        x_int = int(x)
        x_complex = complex(x)
    except ValueError:
        try:
            x = complex(x)
            print("x一开始就为复数")
            x_int = int(x.real)
            x_float = float(x.real)
        except ValueError:
            print("输入的不是有效的数字")

这段代码中,运用了一个Python专门进行异常处理的语法–try...except组,基本结构如下

try:
    # 尝试运行这段代码
    ...
except SomeException:
    # 如果发生了SomeException异常,则执行这段代码
    ...

这一个代码组是整个程序的核心,用于判断数字类型。功能是如果出现了ValueError的错误,会尝试执行下一段代码,直到满足条件为止。在这段代码中,我添加了三个数字类型的判断逻辑–整数、浮点数、复数。特别注意的是复数,我们进行数字类型转换的时候,如果将复数转换为实数,实际上保留的是复数的实部。因此进行数据类型转换的时候,变量名称要写成x.real

3.3 打印结果

# 输出结果
if isinstance(x, int):
    print("整数:", x)
    print("浮点数:", x_float)
    print("复数:", x_complex)
elif isinstance(x, float):
    print("整数:", x_int)
    print("浮点数:", x)
    print("复数:", x_complex)
elif isinstance(x, complex):
    print("整数:", x_int)
    print("浮点数:", x_float)
    print("复数:", x)

这里用了一个函数–isinstance(变量,数字类型)。这个函数实际上是一个判断语句,输出的是布尔值,如果变量的数字类型确实吻合,输出的是True,反之为False。所以这个函数,是可以加入在if语句后面作为条件判断的依据。

让我们输入一个整数1,代码执行结果如下:

请输入一个数字:1
一开始x就是整数
整数: 1
浮点数: 1.0
复数: (1+0j)

输入一个浮点数1.3,代码执行结果如下:

请输入一个数字:1.3
一开始x就是浮点数
整数: 1
浮点数: 1.3
复数: (1.3+0j)

输入一个复数1+j,代码执行结果如下:

请输入一个数字:1+1j
一开始x就是复数
整数: 1
浮点数: 1.0
复数: (1+1j)

4 其他

我将给出用ChatGPT 4o协助用户训练编程能力的指令:

你好,你是一位Python程序语言设计的教师。你需要做以下任务:
1. 我给你发一个学习教程的链接,你需要基于链接里的内容生成几道动手编程的题目,以让我好好掌握知识点;你需要生成一个示例输入、示例输出,像leetcode一样;且在我上传答案之前你不要先给我答案;
2. 生成题目后,我会动手编写程序发给你;
3.发给你之后你需要对我的程序进行评估,并给出改进的建议;
4. 如果我的代码已经很好了,我就进行下一题;如果不太好,我会基于你的改进建议修改代码;
5.修改之后,你再次进行评估,直到我改进好为止;
6. 最后生成你的标准答案,并对我的代码能力进行一个准确客观的评价。

下期再见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值