2014-11-15 7 views
2

는 나는 이런 식으로 뭔가를 할 수있는 나쁜 관행인지 여부를 그냥 궁금했다 :if 문에서 input()을 사용하는 것이 좋지 않습니까?

if input("Continue? Enter yes or no: ").lower() == "yes": 
    # Continue code 
else: 
    # Else code 

I 종류의 같은 당신이 새로운 변수를 만들 필요가 없습니다,하지만이 눈살을 찌푸리게 때문에 어떤 이유로? 이 예에서 나쁘지 않은 경우 다른 경우가 있습니까? 나는이 예를 실제로 보지 못했기 때문에 확실하지 않습니다.

+0

이 질문은 너무 주관적이지만, 코드에 "잘못된"것은 없습니다. –

답변

2

문제는 명확하고 쉽게 유지 관리 할 수 ​​있다면 새로운 이름을 만드는 것이 왜 어려운가요? 앞으로 좀 더 복잡한 검증이 필요한 경우 어떻게해야할까요? 그리고 사용자 입력을 낮추는 것보다 더 많은 작업을해야한다면 어떻게해야할까요?

물론 코드에는 아무런 문제가 없지만 사용자가 예 또는 아니오를 입력하면 작동합니다. 그러나 사용자가 잘못된 데이터를 입력하면 어떻게됩니까? 그런 다음 사용자 입력에 결합하는 몇 가지 이름이 필요합니다 : 당신이 ELIF 성명에서 '아니오'로 무엇을 비교할 것입니다 그렇지 않으면

while True: 
    user_input = input("Type yes or no: ").lower() 
    if user_input == 'yes': 
     # Do something 
    elif user_input == 'no': 
     # Don't do something 
    else: 
     continue 

를? 예를 들어, 사용자가 "지옥 예, 나는 스팸으로 달걀과 스팸으로 스팸하고 싶습니다 !!!"라고 입력하면 그는 좋은 아침 식사를하지 않을 것이다.

귀하의 질문에 많은 점수가 올 수 있습니다. 이것은 광산입니다. 그러나 파이썬에서 더 나은 코드를 만드는 데 도움이 될 것이기 때문에 여기에 무엇이 나타날지 확인하십시오.

1

예, 좋은 습관입니다. 변수를 저장해도 아무 것도 저장하지 않습니다. 변수는 작업을 수행하는 데 도움이되는 도구입니다. 직업을 쉽게 만드는 일을 피하지 마십시오.

변수를 사용할 때 가장 큰 장점 중 하나는 입력문과 조건문 사이에 중단 점을 설정할 수 있기 때문에 디버거를 사용하는 것이 더 쉽다는 것입니다. 로직에 버그를 잠재적으로 도입하지 않고 입력 문을 다른 것으로 일시적으로 대체 할 수 있기 때문에 코드를 더 쉽게 테스트 할 수 있습니다.

1

나는이 같은 사용자의 입력에 대한 몇 가지 다른 일을 추가하려면 때문에 안 좋은 생각, 같은 코드 생각 :

if input("Continue? Enter yes or no: ").lower().strip().replace("[","").replace("]","") == "yes":

코드가 너무 길고 쉽지 않은 것 그것을 읽을 수 있습니다.

관련 문제