我正在训练比较Python中元组的组件,以找到最大和最小的组件,但是我的代码只返回两个最新组件,我不知道为什么:
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”作为回报。有什么帮助吗?谢谢
发布于 2016-10-20 16:49:22
在将拆分的字符串转换为元组之前,将其转换为整数。
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)
...还可以将这两个操作合并为一行。
numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
numbers2=tuple([int(x) for x in numbers.split()])
...发布于 2016-10-20 16:56:16
其他人已经提到,这些项需要转换为整数。我还想提到有可用的min和max函数。
>>> 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()实例化中使用生成器表达式,而不是使用列表理解。
发布于 2016-10-20 16:53:29
元组是字符串的元组,而不是整数的元组。您需要将元组转换为整数元组:
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全面工作计划:
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)输出:
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)https://stackoverflow.com/questions/40160095
复制相似问题