我撰寫了一個程式來比較數字并獲得每對中的最小值。輸入的第一個數字是對的計數,其他數字是要相互比較的數字 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 '
uj5u.com熱心網友回復:
示例代碼中不需要手動輸入.. 也沒有與類相關的問題,因此跳過兩者,只需將您的輸入定義為整數串列:
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]etc. 相當神秘)
如果您希望輸出為字串,則應在運行函式后對其進行轉換:
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])
uj5u.com熱心網友回復:
我通過簡單地用這些修改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 的結果。我不知道為什么,但它奏效了。
uj5u.com熱心網友回復:
如果這是真的,我不知道,但我的猜測是因為如果數字的型別是 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://www.uj5u.com/caozuo/532059.html
標籤:Pythonfor循环
