在Python上比较tuple和int

2024-04-29 02:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在训练在Python中比较元组的组件,以找出最大和最小的,但是我的代码只返回touple的两个最新组件,我不知道为什么:

numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
numbers2=numbers.split()
numbers2=tuple(numbers2)
i=0
gran=numbers2[0]
petit=numbers2[0]
for i in range (len(numbers2)):
    if numbers2[i]>gran:
    gran=numbers2[i]
print(gran)
j=0
for j in range (len(numbers2)):
    if numbers[j]<petit:
    petit=numbers2[j]
print(petit)
resultat= gran+" "+petit
print(resultat)

我得到了“6-6”作为回报。有什么帮助吗?谢谢


Tags: 代码inforlenif组件range元组
3条回答

其他人已经提到这些项需要转换成整数。我还想指出,有min和{}函数可用。在

>>> numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
>>> numbers_tuple=tuple(int(i) for i in numbers.split())
>>> min(numbers_tuple)
-214
>>> max(numbers_tuple)
542

这也避免了像前面的许多答案那样创建初始列表,而是在tuple()实例化中使用生成器表达式,而不是列表理解。在

将拆分后的字符串转换为整数,然后再将其转换为元组。在

numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
numbers2=[int(x) for x in numbers.split()]
numbers2=tuple(numbers2)
...

您也可以将这两个操作合并到一行中。在

^{pr2}$

你的元组是字符串的元组,不是整数的元组。您需要将元组转换为整数元组:

numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
numbers2=numbers.split()
numbers2 = [int(i) for i in numbers2] # convert tuple of strs to tuple of ints

全面工作计划:

^{pr2}$

输出:

542
-214
542 -214
>>> 

我要注意的是,你的程序可能比你现在的程序要简单得多:

numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"

# convert the numbers string to a tuple of integers
num_lst = tuple([int(i) for i in numbers.split()])

# take a guess and say the
# highest and lowest are both
# the first element in num_lst
lowest = num_lst[0]
highest = num_lst[0]

# iterate through the
# num_lst. No need to
# initizalize i beforehand
for i in num_lst:
    # if we find a higher number
    # then our guess of the highest
    # number, reassign highest to that number
    if i > highest:
        highest = i
    # if we find a lower number
    # then our guess of the lowest
    # number, reassign lowest to that number
    elif i < lowest:
        lowest = i

# print the highest and lowest number
print("Highest:", highest, " Lowest:", lowest)

相关问题 更多 >