首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python上元组与int的比较

Python上元组与int的比较
EN

Stack Overflow用户
提问于 2016-10-20 16:46:20
回答 4查看 2.5K关注 0票数 0

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

代码语言:javascript
复制
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”作为回报。有什么帮助吗?谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-20 16:49:22

在将拆分的字符串转换为元组之前,将其转换为整数。

代码语言:javascript
复制
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)
...

还可以将这两个操作合并为一行。

代码语言:javascript
复制
numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
numbers2=tuple([int(x) for x in numbers.split()])
...
票数 1
EN

Stack Overflow用户

发布于 2016-10-20 16:56:16

其他人已经提到,这些项需要转换为整数。我还想提到有可用的minmax函数。

代码语言:javascript
复制
>>> 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()实例化中使用生成器表达式,而不是使用列表理解。

票数 2
EN

Stack Overflow用户

发布于 2016-10-20 16:53:29

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

代码语言:javascript
复制
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

全面工作计划:

代码语言:javascript
复制
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
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 numbers2[j]<petit:
        petit=numbers2[j]
print(petit)
resultat= str(gran)+" "+str(petit)
print(resultat)

输出:

代码语言:javascript
复制
542
-214
542 -214
>>> 

我要指出的是,您的程序可以编写得比现在的要简单得多:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40160095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档