我编写了一个程序来比较数字,并得到每对夫妇中最小的一个。输入的第一个数字是对配对的计数,其他的是只需2乘2与彼此比较的数字。当我执行并给出输入时,列表中的最后一个数字不包括在内。我想知道为什么和如何解决它。
这是我的密码。
class Solution:
def __init__(self):
self.iput = input('Enter the numbers: ')
self.num_list = self.iput.split()
def min_of_two(self):
result = ''
for i in range(0,int(self.num_list.pop(0)) * 2 ,2):
result += str(min(self.num_list[i], self.num_list[i+1])) + ' '
return result
x = Solution()
x.min_of_two()当我执行这个并给出输入时
3
5 3
2 8
100 15输出是
'3 2 100 '而不是
'3 2 15 '发布于 2022-11-12 17:49:57
在示例代码中不需要手动输入。也没有与类相关的问题,因此跳过这两个问题,只需将输入定义为整数列表:
inp = [3, 5, 3, 2, 8, 100, 15]尽量保持功能简单,理想情况下只做“一件”事情,例如返回成双成对的迷你表:
def min_of_two(length, pairs):
res = []
for i in range(length):
res.append(min(pairs[i*2], pairs[i*2+1]))
return res然后,按照函数需要的格式准备输入,在这里,在调用函数之前将长度分开:
print(min_of_two(length=inp[0], pairs=inp[1:]))(我还命名了参数,因为inp[0]等是相当神秘的)
如果要将输出作为字符串,则应在运行该函数后将其转换为:
result = min_of_two(length=inp[0], pairs=inp[1:])
text_result = ' '.join(result)
print(text_result)为了完整..。
输入功能最好位于自己的函数中,完成所有用户交互,并在将输入传递给程序的其他部分之前将输入转换为正确的格式。如果您没有使用对列表的实际长度,而是依赖于用户输入的内容,那么验证输入可能是有用的:
def ask_user_for_list():
while True:
iput = input('Enter the numbers: ')
lst = [int(val) for val in iput.split()]
if lst[0] == len(lst[1:]) / 2:
return lst
print("That doesn't seem right, try again.."ps:通过步骤使用范围也是非常好的:
for i in range(0, length*2, 2):
res.append(min(pairs[i], pairs[i+1])发布于 2022-11-12 18:02:39
我只需简单地用以下方法修改for循环就可以得到正确的结果
def min_of_two(self):
result = ''
for i in range(0,int(self.num_list.pop(0)) * 2 ,2):
result += str(min(int(self.num_list[i]), int(self.num_list[i+1]))) + ' '
return result注意使用一个小的str到int更改的结果。我不知道为什么但它起作用了。
发布于 2022-11-12 18:40:42
我不知道,如果这是真的,,但我猜是因为输入if数字是str,python按数字检查数字
例如:“100”和“15”
1等于1
移动到第二个数字
5大于0
所以15更大
就像我说的,,我不知道,如果我的理论是真的或不,但这是有意义的
这是您的代码:
class Solution:
def __init__(self):
self.iput = input('Enter the numbers: ')
self.num_list = self.iput.split()
def min_of_two(self):
result = ''
for i in range(0,int(self.num_list.pop(0)) * 2 ,2):
# change self.num_list[i] & self.num_list[i + 1] from str to int
result += str(min(int(self.num_list[i]), int(self.num_list[i+1]))) + ' '
return result
x = Solution()
print(x.min_of_two())https://stackoverflow.com/questions/74415124
复制相似问题