RobbyC 发表于 2020-9-2 15:29:36

大小排序问题

x = input('请输入第一个数:')
y = input('请输入第二个数:')
z = input('请输入第三个数:')

if x < y:
    if x < z:
      if y < z:
            print(x,y,z)
      else:
            print(x,z,y)
    else:
      print(z,x,y)
else:
    if x < z:
      print(y,x,z)
    else:
      if y < z:   
            print(y,z,x)
      else:
            print(z,y,x)


Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
============================= RESTART: D:\桌面文件\1.py ============================
请输入第一个数:55
请输入第二个数:13
请输入第三个数:110
110 13 55
>>>

请问大佬为什么两位数与三位数比大小的时候,大小排序会是错误的啊?

baige 发表于 2020-9-2 15:37:16

要转换类型

baige 发表于 2020-9-2 15:38:10

x = int(input('请输入第一个数:'))
y = int(input('请输入第二个数:'))
z = int(input('请输入第三个数:'))
#x<y
if x < y:
    if x < z:
      if y < z:
            print(x,y,z)
      else:
            print(x,z,y)
    else:
      print(z,x,y)
#x>y
else:
    if x < z:
      print(y,x,z)
    else:
      if y < z:   
            print(y,z,x)
      else:
            print(z,y,x)

疾风怪盗 发表于 2020-9-2 15:38:17

逻辑没问题,input接收的是字符串型,要转化为数值型再比较,否则按照字符串型来比大小,规则不一样是一位一位比较的

求资专用 发表于 2020-9-2 15:38:30

你没有用int把xyz转换成整数,input得到的格式是字符串str,于是“13”和“110”比是用字符串的比较方式。,比第一位1和1一样,比第二位3和1,1小,所以110就比13小了。
页: [1]
查看完整版本: 大小排序问题