2011-02-14 4 views
1

사용자에게 두 개의 정수를 묻는 프로그램을 작성하십시오. 각 정수는 0보다 큰 입니다. 프로그램은 두 정수가 갖는 약수의 수를 표시하고 계산합니다. 공유지. 추가 요구 사항 : 정수가 1보다 작 으면 사용자에게 문제가 있음을 알리고 정수를 다시 요구합니다.Python : 두 정수의 표시 및 제수 나누기

이것은 지금까지 작성한 내용이지만 여기 붙어있어 두 숫자를 통합하는 방법을 모릅니다. 본질적으로 여기서 어디로 가야할지 모르거나 '여기'가 맞다면 ???

는 하나씩 단계를 수행하는

integer1 = input("Enter an integer: ") 
integer2 = input("Enter an integer: ") 

print integer1, ": " , 

i = 1 
while i <= integer1 and integer2 : 

    if integer1 or integer2 < 1 : 
     print input("Enter an integer: ") 

    if integer1%i == 0 and integer2%i == 0 : 
     print i , 

    i = i + 1 

답변

3

시도 [이 파이썬 내 처음이다] ... 도와주세요. 그리고 간단한 단계로 작업을 분해하십시오.

  1. 계산

얻기 첫 번째 숫자

  • 를 받기 두 번째 숫자이 당신이 아래로 깰 수 학습과

    1. 첫 번째 숫자를 얻기 : 당신의 예에서이 같은 일이 될 수있다 :
      • 루프 수있는 동안은

  • ...

    유효성 검증이 while 루프 내부에 안 것을 볼 수 있습니다이 방법으로 확인하지 않습니다.

    다른 팁 : 각 단계를 별도로 테스트하십시오. 이 방법을 사용하면 if integer1 or integer2 < 1 또는 while i <= integer1 and integer2이 자신의 생각대로 작동하지 않습니다.

    1

    이것은 논리적 연산자가 파이썬이나 일반적인 프로그래밍에서 작동하는 방식이 아닙니다. 파이썬 integer2에서

    while i <= integer1 and integer2 : 
    

    은 항상 true입니다 별도의 논리적 문입니다. 대신보십시오 : while i <= integer1 and i <= integer2

    0
    • 당신은 가 루프 외부에서 입력의 유효성을 검사하는 코드를 이동할 수 있습니다.
    • print i에는 쉼표가 필요하지 않습니다.
    • 흐름의 구문은 예의 경우 if integer1 or integer2 < 1: 일 때 약간의 작업이 필요합니다. if ((integer1 < 1) or (integer2 < 1)):이어야합니다.
    0

    먼저 두 가지 정수를 모두 얻는 간단한 방법을 사용해야합니다. 거기에 여러 오류가있을 수 있습니다. (raw_input이되고 숫자가 int로 확인되는 것이 더 좋다.)

    integer1 = -1 
    integer2 = -1 
    while(integer1 < 1): 
        integer1 = input("Enter integer 1: ") 
    while(integer2 < 1): 
        integer2 = input("Enter integer 2: ") 
    
    factor_list1 = [] # store factor list of first number 
    double_factor_count = 0 
    
    # generate the factor list of the first number 
    for i in range(1, integer1+1): # range(1,5+1) is the list [1,2,3,4,5] 
        if integer1 % i == 0: 
         factor_list1.append(i) 
    for j in range(1, integer2+1): 
        if integer2 % j == 0 and j in factor_list1: 
         print j, 
         double_factor_count += 1 
    print "\n double count:", double_factor_count 
    

    이 아마도 당신이 범위 변경하려면 (2, integer1은) 당신이 하나를 건너 뛸와 정수 숫자로 입력합니다.

    는 원래 코드가 너무 포럼 코드로 표시하지 않았다 (들여 쓰기되지 않은 참고, 그것은 andor 표현 (예를 들어, True 또는 False을있는 일이). 그래서 당신은 if integer1 < 1 or integer2 < 1:을 의미했다.

    0
    결합

    코드는 실제로 매우 가까운,하지만 당신은 몇 가지 문제가 있습니다. 당신은 제대로 integer1integer2의 유효성을 검사하지 않는

    1. (I 의심하지만 방금 대체 값을 인쇄하고 있기 때문에 당신이 알고)를
    2. 루프 테스트가 중단되었습니다. "i"이 integer1보다 작고 integer2이 0이 아님을 의미합니다. "

    당신은 또한 몇 가지 방법에 코드를 향상시킬 수

    1. 를 귀하의 의견뿐만 아니라> = 1, 또한 정수는 것을 보장.
    2. while 루프 대신 for 루프를 사용하면 파이썬의 우수한 iterables 지원을 사용합니다.

    여기에 어떤 사용자가 입력하는 정수되었는지 확인하는 방법은 다음과 같습니다 여기

    integer1 = 0 
    
    while not integer1: 
        try: 
         # raw_input() ensures the user can't type arbitrary code 
         # int() throws a ValueError if what they typed wasn't an integer 
         integer1 = int(raw_input("Enter the first integer: ")) 
    
         if integer1 < 1: 
          print "You must enter an integer greater than 0!" 
          integer1 = 0 # so that our while statement loops again 
        except ValueError: 
         # the user typed something other than an integer 
         print "You must enter an integer!" 
    

    while, tryif 문은 사용자가 이전에 유효한 정수를 입력하도록 강요 될 수 있도록 여러분의 코드가 계속됩니다. 여기에 사용자에게 표시의 예 :

    Enter the first integer: 6.6 
    You must enter an integer! 
    Enter the first integer: -5 
    You must enter an integer greater than 0! 
    Enter the first integer: sys.exit(0) 
    You must enter an integer! 
    Enter the first integer: 12 
    Enter the second integer: 
    

    는 그리고 이것은 내가 루프 설정 권하고 싶습니다 방법입니다

    # min() returns the smallest of its arguments 
    # xrange() iterates over a sequence of integers (here, starting with 1 and 
    #   stopping at min(integer1, integer2)) 
    for i in xrange(1, min(integer1, integer2) + 1): 
        # magic goes here! 
    

    문서 링크 :

    0

    귀하의 문제는 귀하의 경우 문과입니다.

    오히려 말보다

    : while i <= integer1 and integer2, 당신은 같은가 다른 if 문에 적용 while i <= integer1 and i <= integer2

    말을해야합니다. if integer1 or integer2 < 1 :if integer1 < 1 or integer2 < 1 :

    이어야합니다.