不清楚If语句是否起作用

时间:2020-02-23 05:09:26

标签: python for-loop if-statement

您能解释下面的普通代码语句功能是否不清楚的原因吗?

numbers = "677 2584 238 3126 1366 646 2560 2439 543 379 1048 2053 2518 1496 2537 1983 118 2105 1175 145 311 1881"
listed_numbers = numbers.split(" ")
max = listed_numbers[0]
min = listed_numbers[0]
for each in listed_numbers:
    if each >= max:
        max = each
    if each <= min:
        min = each

print(str(max) + " " + str(min))

已附加代码链接 https://repl.it/join/grsvacto-nihilisticrefor

PS 如果问题不清楚或不正确,请指出令人困惑的片段,或编辑我的问题。这将有助于我稍后提出这个问题。

1 个答案:

答案 0 :(得分:4)

当您对字符串类型而不是数字类型(int,float等)使用比较运算符(><>=<=)时,这两个使用字母排序比较值,以确定哪一个更大-即使您的字符串仅包含数字。以1开头的字符串将被排序为低,即使该字符串为100也是如此。以9开头的字符串将被高排序,即使该字符串是9

例如,在您的python REPL中尝试以下操作:

>>> 9 < 100
True
>>> "9" < "100"
False

如您所见,您正在执行字符串比较而不是数值比较。您需要先将值转换为int。代替:

listed_numbers = numbers.split(" ")

…仅创建一个字符串列表,请尝试:

listed_numbers = [int(i) for i in numbers.split(" ")]

…将每个值转换为一个int并使用list comprehension语法创建一个值列表。

尝试一下更改后的代码,您将获得输出3126 118