2017-11-30 8 views
-2

방금 ​​파이썬을 배우기 시작했습니다. 난수가 8의 배수인지 알아보기 위해 시도했지만 끔찍하게 실패했습니다 ... 수학 문제로 어려움을 겪었습니다. 학교에 가서 내가 간다. :/임의의 숫자가 8의 배수인지 확인하십시오 (파이썬)

봐 주위 사방에, C에 대한 답변이 아닌 파이썬을 발견

코드

import random 

Numbers = [15, 100, 50, 70, 5, 10, 12, 20, 123, 72, 81, 76, 25, 19, 40, 17, 16, 32] 

print("\n\n") 

def getRandomSelection(numbers): 
    one = (random.choice(numbers)) 
    two = (random.choice(numbers)) 
    if two == one: 
    while two == one: 
     two = (random.choice(Numbers)) 

return one, two 

print("\n\n") 

def MutipleOfEight(numList): 

    one = int(getRandomSelection(Numbers)) 
    print("First Number: " + str(one)) 
    if (one % 8 == 0): #To check if it's multiple of 8 
    print(str(one) + "is a multiple of 8") 
    else: 
    print(str(one) + "is not a multiple of 8") 

그것은 간단한 수학 함수에 그것을 테스트, 숫자를 얻고이를 반환, 단지 안 배수를하는 방법을 얻으십시오 ... 어떤 도움을 주실 것입니다! :)

그리고 네, 어떻게 찾았는지 배수를 찾을 수 있지만 여전히 이해가 안됩니다. :/

+2

모듈러스 연산자를 사용하는 것이 올바른 접근 방식입니다. 정확히 작동하지 않는 것은 무엇입니까? – timgeb

+0

'return one, two'를 사용하면 두 개의 값을 포함하는 튜플을 반환 할 수 있습니다. 그런 다음이 튜플을 int (getRandomSelection (Numbers))를 사용하여 정수로 변환하려고합니다. 그것은 작동하지 않습니다. BTW, 당신은 당신의 기능 중 하나를 호출하지 않습니다. – Matthias

+0

1. 파이썬 구문 :'왜 내 코드가 작동하지 않습니까? 코드가 왜 실패하나요? 내 컴퓨터가 왜 불이 나나요? '이것은 대개 언어 문서를주의 깊게 읽음으로써 해결됩니다. 올바른 데이터 유형을 사용하고 있는지 확인해야합니다. 여러분은'getRandomSelection'에서 두 개의 값을 리턴하고 있음을 주목하십시오. 파이썬은 당신이 튜플을 리턴 할 필요가 있다고 가정합니다. 2. 파이썬 의미론 : 이들은 일반적으로 논리 문제이며 실패하지는 않지만 잘못된 결과를 생성합니다. 'MultipleOfEight'에서'numList'를 사용하고 있지만 결코 사용하지 않습니다! – RafazZ

답변

2

여기에 몇 가지 문제가 있습니다.

  • return 문이 올바른 범위에 있지 않으므로 반환 방법이 본체에 있기 때문에 메서드 호출에서 값을 반환해야합니다. 당신은 당신의 방법 정의의 int

에 반환 값을 캐스팅

  • (에 StackOverflow에 게시하면서이 문제가 될 수도 있습니다), 당신은 돌려 tuple :

    return one, two 
    

    그러나 값을 가져올 때 int

    one = int(getRandomSelection(Numbers)) 
    
    로 캐스팅합니다.

    (one, two) = getRandomSelection(Numbers) 
    
    • 당신의 MutipleOfEight 정의 번호 목록이 필요하지만 그건 당신이 실제로 사용하는 목록이 아닙니다 :

      데프 MutipleOfEight (numList) : 16,

      대신, 실제로 tuple 가져 하나 = int (getRandomSelection (Numbers))

    되어야 할 항목 :

    def MutipleOfEight(numList): 
        (one, two) = getRandomSelection(numList) 
    

    마지막으로, 실제로는 main 메소드를 호출하지 않습니다. 당신의 대본이 끝날 때; 실제로 그것을 실행하려면이 줄을 추가 :

    MultipleOfEight(Numbers) 
    

    전화 숫자, 당신은 상단에 정의 된 마스터 목록을 사용하여이 방법.

  • 1

    getRandomSelection은 두 개의 숫자로 구성된 튜플을 반환하므로 int(getRandomSelection(Numbers))이 실패합니다. int으로 변환하지 않고 one, two = getRandomSelection(Numbers)을 수행 할 수 있습니다. 당신이 가지고있는 수학은 정확 해 보입니다.

    0

    다른 사람들은 실수를 이미 지적 했으므로 코드를 다시 작성해야합니다.

    import random 
    
    Numbers = [15, 100, 50, 70, 5, 10, 12, 20, 123, 72, 81, 76, 25, 19, 40, 17, 16, 32] 
    
    def getRandomSelection(numbersList): 
        one = (random.choice(numbersList)) 
        two = (random.choice(numbersList)) 
        while two == one: 
        two = (random.choice(numbersList)) 
    
        return one, two 
    
    def MutipleOfEight(numbersList): 
        one,two = getRandomSelection(numbersList) # You can use this to get both numbers from the other function 
        print("First Number: " + str(one)) 
        if (one % 8 == 0): #To check if it's multiple of 8 
        print(str(one) + " is a multiple of 8") 
        else: 
        print(str(one) + " is not a multiple of 8") 
    
        print("\n\n") 
    
        print("Second Number: " + str(two)) 
        if (two % 8 == 0): #To check if it's multiple of 8 
        print(str(two) + " is a multiple of 8") 
        else: 
        print(str(two) + " is not a multiple of 8") 
    
    MutipleOfEight(Numbers)