2014-11-05 2 views
0

첫 번째 피보나치 용어 목록을 만드는 프로그램을 만들려고합니다. 프로그램 자체는 피보나치 수의 목록을 생성한다는 점에서 효과가 있습니다. 문제는 n이 양의 정수인지 확인하기 위해 체크를하고 싶지만 어떻게해야할지 모르겠다. 여기 변수가 양의 정수인지 확인하기 위해 루프를 만듭니다.

코드 : 그것은 (N)
  • 그럼 프로그램 기능의 FIB를 정의하는 정의 정수로 설정된다 (n)의 사용자 입력에 대한 askes,

    n = int(input("Please enter the number of Fibonacci numbers you want: ")) 
    def fib(n): 
        if 0 <= n <= 1: 
         return 1 
        else: 
         return(fib(n-1) + fib(n-2)) 
    
    if n < 0: 
        print("Please enter a positive integer") 
        n = None 
        fib(n) 
    else: 
        for i in range(n): 
         print(fib(i), end=", ")  
    
    ender = input("\nPress enter to end the program\n") 
    
    • 시작할
    • 그런 다음 n이 1 또는 0과 같은지 확인한 다음 값 1을 반환합니다.
    • 그렇지 않으면 값 n에 대한 피보나치 시퀀스를
    • n < 0이면 오류를 인쇄하고 n 값을 제거하십시오.
    • 이것은 무한 루프를 만들 수 있으므로 n의 값을 루프백하고 바꿀 수 없다는 점에서 문제가 발생하는 곳입니다. fib (n) 함수 내에서 n의 정수 값을 정의하지 마십시오.
    • else 문은 쉼표와 공백으로 구분 된 목록의 피보나치 숫자를 형식화하고 인쇄하며, 프로그램을 보유하지 않습니다. 자동으로 종료됩니다.

    n의 음수 값을 제거하고 다시 묻는 루프를 만드는 방법은 무엇입니까?

    많은 감사

  • 답변

    1

    다른 사람들은 당신에게 주어진 것을 : 시도 사용자를 처리 할

    n = -1 
    while n < 0: 
        try: 
         n = int(input("Please enter the number of Fibonacci numbers you want: ")) 
        except ValueError: 
         continue 
    

    값을 넣으십시오. 5 대신 HELLO을 입력하십시오.

    +0

    완벽하게 작동했습니다. 감사합니다. –

    1

    세트 n -1 후 n만큼의 전류 값이 마이너스로 새 n 요청 루프를 갖는다. 당신이 좋은 입력 할 때까지

    n = int(input("Please enter the number of Fibonacci numbers you want: ")) 
    
    while n < 0: 
    
        n = int(input("Bad input! try again: ")) 
    
    *** do your other things *** 
    

    이 방법은, 그것은 반복 검사 :

    0

    이것에 대해 갈 수있는 좋은 방법은 다음과 같다.

    +0

    인 경우에도 사용자가 int가 아닌 다른 값을 입력하지 않았는지 확인하는 것이 좋습니다. –

    +0

    파이썬 3을 사용하고 있습니다.이 경우 작동하는지 봅시다. –

    +0

    정수가 아닌지 확인하려면 무엇인가해야합니까? while 루프에 뭔가를 할 수 있을까요 : n <0과 .... :? –

    0

    당신은 당신의 코드 시작 부분에서 while 루프를 설정할 수 있습니다에 조금 확장하려면

    n = -1 
    while n <= 0: 
        n = int(input("Please enter the number of Fibonacci numbers you want: ")) 
    
    +1

    이전에 n에 값을 할당해야합니까? –

    +0

    내 대답은 아래 Scott Hunter의 대답과 동일합니다. – AtAFork

    -1

    부울 변수를 사용할 수 있습니다. 양수를 입력 할 때까지 루핑을 계속합니다.이 경우에는 tu 값이 False

    def fib(n): 
        if 0 == n and n == 1: 
         return 1 
        else: 
         return(fib(n-1) + fib(n-2)) 
    isTrue= True 
    
    while isTrue: 
        n = int(input("Please enter the number of Fibonacci numbers you want: ")) 
    
        if n < 0: 
         print("Please enter a positive integer") 
        else: 
         isTrue= False 
         for i in range(n): 
          print(fib(i), end=", ")  
    
    ender = input("\nPress enter to end the program\n") 
    
    +0

    이전에 시도해 보았을 때 불리언 변수에 대한 많은 경험이 없었기 때문에 대답을 위해 감사함을 느꼈습니다. –

    관련 문제