작성한 While 루프가 종료되지 않습니다. 나는 그것을 여러 번 시험해 보았고 그 이유를 알 수 없다. "0764526413"의 ISBN 코드를 입력하면 "모든 번호"를 반환하고 루프를 종료합니다. 그러나 코드에서 문자로 테스트하면 (다시 돌아가는 루프를 확인하십시오) 맨 위로 돌아가서 코드를 다시 입력하라는 메시지가 표시됩니다. 나는 그렇게하고 모든 숫자 코드를 입력한다. 이 시점에서 저는 무한 루프에 있습니다. 두 번째로 모든 숫자 코드를 입력하는 경우에도 종료되지 않습니다. 나는 왜 그것이 올바르게 반복되는 것으로 보이는지 이해하지 못한다. 모든 숫자 코드를 첫 번째 라운드에 입력하면 잘못된 코드를 입력하고 올바른 코드를 입력하면 안된다. Python - "While"루프가 걸렸습니다.
# Variable to start loop
Digits = 'N'
ISBN_temp = ''
# The loop asks for the ISBN, removes the dashes, removes check digit,
# And checks to see if the info entered is numeric or not.
while Digits == 'N':
print('Please enter the ISBN code with or without the check digit.')
temp_ISBN = input('You may enter it with dashes if you like: ')
ISBN_no_dash = temp_ISBN.replace('-','')
no_dash_list = list(ISBN_no_dash)
# If the user entered a check digit, remove it.
if len(no_dash_list) == 10:
del no_dash_list[9]
ISBN_no_check = no_dash_list
elif len(no_dash_list) == 13:
del no_dash_list[12]
ISBN_no_check = no_dash_list
else:
ISBN_no_check = no_dash_list
# Turn list back into a string and then make sure all characters are
# Numeric.
for num in ISBN_no_check:
ISBN_temp = ISBN_temp + str(num)
if ISBN_temp.isnumeric():
print('All numbers')
Digits = 'Y'
else:
print()
print('Please verify and reenter the ISBN number.')
print()
Digits = 'N'
내가 코딩의 일부가 이상한 것처럼 보일 수 있습니다 알고 있지만, 사실은 내가 숙제를 위해 쓰고있어 더 큰 프로그램의 작은 부분 :
코드는 다음과 같습니다. 이것이 나에게 문제가되는 유일한 부분이다. 어떤 도움이라도 대단히 감사합니다. 나는 정말로 내가 며칠 동안 전체 프로그램을 작업했기 때문에 내가 보지 못했던 작은 것이기를 바라고 있습니다. 대단히 감사합니다! "모든 숫자"중 하나를 반환하고 ISBN이 올바르게 입력되면 루프를 종료하거나 숫자가 아닌 다른 값이 입력되면 루프를 종료하는 데 필요합니다. 당신은 이전에 빈 문자열로 ISBN_temp
을-다시 설정해야
@MartijnPieters - 그 점을 지적 해 주셔서 감사합니다. 실제로 모든 코드가 제 코드에서 정확하게 들여 쓰기가되었지만 모든 것을 붙여 넣은 후에 여기에서 좀 더 탭하는 것을 잊어 버렸습니다. 들여 쓰기를 수정했습니다. – Rogue
@ 로그 : 모든 것을 들여 쓰지 마십시오. 코드를 붙여넣고 여기에있는 모든 코드 행을 선택하고 툴바의'{}'버튼을 사용하여 들여 쓰기를 추가하십시오. –
또 다른 조언은 더 나은 변수 이름을 생각하는 것입니다. 'ISBN_temp'와'temp_ISBN'은 다른 것을 의미합니다. 혼란 스럽네. 'withoutCheckDigit'과'originalUserInput'은 각각 어떻습니까? –