wakakka 发表于 2021-12-12 00:12:47

新手求助

求助:
为什么在idle模式下运行的代码(int)无法自动获取整数但是交互模式却是可以的

luck78 发表于 2021-12-12 00:12:48

其实就是 int() 可以将浮点数改成整数,但是不能将字符串变成整数
比如 3.3 和加了引号的字符串 "3.3" 是不一样的,一个是数字,一个是字符串
>>> int("3.3")
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
    int("3.3")
ValueError: invalid literal for int() with base 10: '3.3'
>>> int(3.3)
3

suchocolate 发表于 2021-12-12 00:42:57

本帖最后由 suchocolate 于 2021-12-12 10:00 编辑

num1 = float(input('Input number1: '))# 改成float确保无论输入的是整数还是浮点数都能计算。
num2 = float(input('Input number2: '))
if num1 > num2:
    print('num1 > num2')
elif num1 < num2:# 对于同一个判断式,要用elif。如果用多个if就会多计算2次,造成CPU浪费。
    print('num1 < num2')
else:
    print('num1 = num2')

wp231957 发表于 2021-12-12 07:44:51

int一个浮点数自然没问题,但是要int一个浮点型字符串,就要先float强转,然后再int强转

傻眼貓咪 发表于 2021-12-12 10:39:37

楼主你应该是把两个状况想象成同个状况吧?

状况 1:
num = input() # 尝试输入浮点数
num = int(num)

状况 2:
num = 3.33
num = int(num)

以上两者根本不同,状况 1 会报错,状况 2 没有问题。

状况 1:将字符串变成整数
状况 2:将浮点数变成整数

wakakka 发表于 2021-12-12 11:09:38

傻眼貓咪 发表于 2021-12-12 10:39
楼主你应该是把两个状况想象成同个状况吧?

状况 1:


为什么不是同一个情况呢

傻眼貓咪 发表于 2021-12-12 11:15:43

wakakka 发表于 2021-12-12 11:09
为什么不是同一个情况呢

大哥,字符串和浮点数不一样类型

你把香蕉变成萝卜,你把大白菜变成萝卜,完全是两种状况,这点很容易明白吧?再不明白我也无语了
页: [1]
查看完整版本: 新手求助