首页 > 解决方案 > Python3比较,在linux上执行脚本,输出错误

问题描述

我对 python3 编程语言非常陌生。任何人都可以看看,我的代码有什么问题?

#! /usr/bin/python3
x = input("enter the first number: ")
y = input("enter the second number: ")
z = input("enter the third number: ")
def max(x, y, z):
    if x>=y>=z:
            return x
    elif y>=x>=z:
            return y 
    else:
            return z
print('Maximal Number is: ' + max(x, y, z))

root@kali:~# ./Comparision.py

输入第一个数字:26

输入第二个数字:768

输入第三个数字:9

最大数量是:9


输入第一个数字:563

输入第二个数字:96

输入第三个数字:86

最大数量是:86

提前谢谢你,德纳

标签: python-3.xlinux

解决方案


有几件事。

  • 您正在比较字符串而不是整数,对于字符串 "9" > "10" 是True因为字符串是逐位比较(或逐个字母)。如果要比较实际数字,则需要将字符串解析为整数,例如:x = int(x),y = int(y)等。
  • 在第二个示例中,它应该已经打印了y值,但情况看起来像这样:y>=z>=x,但这种情况没有处理,所以你的代码命中else并返回z

总的来说,除非你正在做的是某种锻炼,否则我建议使用内置max函数:

>>> max([1, 2, 3])
3

如果您只是在练习,那么编写条件并不是找到一组数字的最大值的最佳方法。这个问题通常通过使用for循环的算法来解决,它可以只用一个 处理任意大的数字集合if,例如:

In [1]: def my_max(arr):
   ...:     retval = None
   ...:     for x in arr:
   ...:         if retval is None or x > retval:
   ...:             retval = x
   ...:     return retval
   ...:

In [2]: my_max([1, 2, 3])
Out[2]: 3

推荐阅读