숫자 입력을 받아 0과 0의 두 시작 값이있는 목록과 비교하고 싶습니다. 숫자가 list[0]
보다 큰 경우 list[0]
을 number로 바꿉니다. list[1]
에도이 작업을 수행하십시오. 음수가 입력되면 루프를 끝내고 새 번호로 목록을 인쇄하십시오. 음수 이전에 2 개 미만의 양수가 입력 된 경우 해당 효과에 대한 설명을 인쇄하십시오.배열의 파이썬 첫 번째 항목이 캡처되지 않음
또한 컴퓨터가 새 목록을 표시하기를 원합니다.
문제는 이것입니다. 입력 한 첫 번째 숫자는 코드에서 무시되고 목록에 캡처되지 않습니다. 그 이유는 확실하지 않습니다. 아래 코드를 실행 한 결과뿐만 아니라 내 코드도 포함 시켰습니다.
def printTwoLargest():
number = eval(input('Please enter a number'))
largest = [0,0]
while number > -1:
if number > largest[0]:
largest[1] = largest[0]
print (largest) #remove after debug
largest[0] = number
elif number > largest[1]:
print (largest) # remove after debug
largest[1] = number
number = eval(input('Please enter a number'))
if largest[0] == 0 or largest [1] == 0:
print('You have not entered enough positive numbers, please enter at least two positive numbers')
else:
print (largest)
## print statements are a debug test. Cant figure out why, but it seems largest[0]
## and largest[1] are not filled until the 3rd postive number input. It should be
## the second one.
및 실행 후 쉘의 결과 :
>>> printTwoLargest()
Please enter a number 5
[0, 0]
Please enter a number 4
[5, 0]
Please enter a number 6
[5, 5]
Please enter a number -1
[6, 5]
>>> printTwoLargest()
Please enter a number 9
[0, 0]
Please enter a number 8
[9, 0]
Please enter a number -1
You have not entered enough positive numbers, please enter at least two positive numbers
>>> printTwoLargest()
Please enter a number -1
You have not entered enough positive numbers, please enter at least two positive numbers
'int (input())'not eval을 사용합니다. 훨씬 더 안전합니다. –
'가장 큰 [1] == number'는 저에게 오타처럼 보입니다. 할당 할 때는'=='보다는 "="를 사용하십시오. – Kevin
감사합니다. @ RyanHaining 나는 그것을 바꿨고 당신에게 감사합니다. 두 가지 모두 수정했습니다. 문제가 아직 남아있는 것 같습니다. >>> printTwoLargest() 이 number4 [6, 0] 나는 당신의 질문에 의해 혼란 조금 해요 숫자 –