PKR 发表于 2022-7-26 22:20:27

为什么这个代码我自己打程序不会报错

但是小甲鱼出的作业说这个代码是错的,但是我自己打出来没有问题啊,这是为什么,求大佬的帮助谢谢!!!

临时号 发表于 2022-7-26 22:23:30

num1和num2是字符串,后面却拿字符串进行比较,这是一个bug
解决:
1、2行改成
num1 = int(input("请输入第一个整数: "))
num2 = int(input("请输入第二个整数: "))

ZhKQYu 发表于 2022-7-26 22:26:53

你会发现10比9小{:5_97:}

PKR 发表于 2022-7-26 22:27:52

临时号 发表于 2022-7-26 22:23
num1和num2是字符串,后面却拿字符串进行比较,这是一个bug
解决:
1、2行改成

可以理解为input() 函数获取的只能说是字符串类型,而因为字符串之间不能进行比较所以是错的,所以要先用int函数转换吗

PKR 发表于 2022-7-26 22:30:48

ZhKQYu 发表于 2022-7-26 22:26
你会发现10比9小

还不懂原理 为什么字符串之间比较起来就会运行成这样……能解释解释吗小白一个

青出于蓝 发表于 2022-7-26 22:31:49

PKR 发表于 2022-7-26 22:27
可以理解为input() 函数获取的只能说是字符串类型,而因为字符串之间不能进行比较所以是错的,所以要先用 ...

字符串比较大小也是可以的,不会报错,但字符串之间的大小比较 就是 比较字符的 Unicode 编码

这当然不符合需求,所以要int转型,比较数字大小

临时号 发表于 2022-7-26 22:31:51

PKR 发表于 2022-7-26 22:27
可以理解为input() 函数获取的只能说是字符串类型,而因为字符串之间不能进行比较所以是错的,所以要先用 ...

字符串能比较,但你会发现9比10大,因为字符串之间的比较与整数之间的比较是不一样的,所以我们需要将字符串转换为整数

PKR 发表于 2022-7-26 22:35:51

青出于蓝 发表于 2022-7-26 22:31
字符串比较大小也是可以的,不会报错,但字符串之间的大小比较 就是 比较字符的 Unicode 编码

这当然 ...

但是怎么看出number1是字符串的,不是要带双引号吗,为什么就能知道他是字符串了

PKR 发表于 2022-7-26 22:38:48

临时号 发表于 2022-7-26 22:31
字符串能比较,但你会发现9比10大,因为字符串之间的比较与整数之间的比较是不一样的,所以我们需要将字符串 ...

怎么看出来number是字符串的区分不了啊啊啊

青出于蓝 发表于 2022-7-26 22:40:44

PKR 发表于 2022-7-26 22:35
但是怎么看出number1是字符串的,不是要带双引号吗,为什么就能知道他是字符串了

input函数返回值默认为str类型(即字符串)

临时号 发表于 2022-7-26 22:41:07

PKR 发表于 2022-7-26 22:38
怎么看出来number是字符串的区分不了啊啊啊

input函数接受的输入都是字符串类型的

ZhKQYu 发表于 2022-7-26 22:45:05

字符串之间的比较是比较编码的大小,你可以用ord()和chr()这两个内置方法来查看

ZhKQYu 发表于 2022-7-26 22:46:03

ZhKQYu 发表于 2022-7-26 22:45
字符串之间的比较是比较编码的大小,你可以用ord()和chr()这两个内置方法来查看

而且是逐位比较,一旦发现一个比另一个大,就会又返回值

PKR 发表于 2022-7-27 12:12:30

青出于蓝 发表于 2022-7-26 22:40
input函数返回值默认为str类型(即字符串)

input函数括号里面的不是才叫字符串吗,就是那个“请输入一个数字”,我是想说是怎么知道num1是字符串的,麻烦说的通俗点,新手不太懂😂

PKR 发表于 2022-7-27 12:18:35

青出于蓝 发表于 2022-7-26 22:40
input函数返回值默认为str类型(即字符串)

不是要被引号引起来的才叫字符串吗???

青出于蓝 发表于 2022-7-27 12:27:51

PKR 发表于 2022-7-27 12:18
不是要被引号引起来的才叫字符串吗???

不是的~
举个例子 str(1) 也是字符串~
input同理

PKR 发表于 2022-7-27 15:06:09

青出于蓝 发表于 2022-7-27 12:27
不是的~
举个例子 str(1) 也是字符串~
input同理

所以总之就是 num1=input( )中num为字符串,input函数括号里的也是字符串是吗,所以要先用int函数将括号的转化成数字形式是吗,这种理解可以吗{:5_92:}

青出于蓝 发表于 2022-7-27 15:09:25

PKR 发表于 2022-7-27 15:06
所以总之就是 num1=input( )中num为字符串,input函数括号里的也是字符串是吗,所以要先用int函数将括 ...

可以~

PKR 发表于 2022-7-27 15:14:27

青出于蓝 发表于 2022-7-27 15:09
可以~

谢谢!!

青出于蓝 发表于 2022-7-27 15:22:39

PKR 发表于 2022-7-27 15:14
谢谢!!

问题已解决别忘了设置最佳哈~
页: [1]
查看完整版本: 为什么这个代码我自己打程序不会报错