python-3.x - 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
提前谢谢你,德纳
解决方案
有几件事。
- 您正在比较字符串而不是整数,对于字符串 "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
推荐阅读
- python - 跨列迭代条件以切片熊猫数据框
- javascript - 我怎样才能让这个视差滑块自动滑动
- intellij-idea - 服务器返回 HTTP 响应代码:401 用于 URL:http://artifactory.hello.com/artifactory/gradle-4.4.1-all.zip
- php - 如何从 PHP 中的数组中获取相关项的第一个子集?
- java - 如何区分鼠标事件和触摸屏事件?
- javascript - 如何从 php 传递数据以在 javascript 中对其进行初始化?
- javascript - Terser CLI:如何删除评论?
- c# - 在单个 .sln 中管理本地 nuget 依赖项
- visual-studio-code - ElixirLS 调试器在与 Phoenix 和 VSCode 一起使用时意外停止
- c# - ConnectionFactory 从 .net 核心注册服务创建了太多连接