无法弄清楚如何让我的功能在Python

时间:2018-05-02 13:49:43

标签: python

我有一个我想要制作的程序,它将显示数字的所有因素或者说它是素数。这是一个简单的程序,但我有一个主要问题。一旦打印输入数字的所有因子,它总是不返回。我已经尝试了多种方法来摆脱它,但没有任何东西可以解决其他问题。代码如下。

def mys(x):
    x = input("Enter a number: ")
    for i in range(2,x):
        r = x % i
        if r == 0:
            print(i)
print(mys(x))

该代码仅用于打印因素,但这就是问题所在。输入数字后得到的结果(在本例中为20)如下:

2
4
5
10
None

无论我做什么,我都无法打印无。

2 个答案:

答案 0 :(得分:3)

因此,如果您不希望打印mys(无)的返回值,请不要打印它:

mys(x)

答案 1 :(得分:2)

在python中,没有return语句的函数总是返回None。

我想你要做的是调用mys函数,而不是打印它。 请注意,您应该删除x参数,因为它是在函数内部询问的。

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;

string solution(string &S){

    int n = stoi(S);
    int answer = 0;

    // char array to store hexadecimal number
    string hexaDeciNum;

    // counter for hexadecimal number array
    int i = 0;
    while(n!=0)
    {
        // temporary variable to store remainder
        int temp  = 0;

        // storing remainder in temp variable.
        temp = n % 16;

        // check if temp < 10
        if(temp < 10)
        {
            hexaDeciNum[i] = temp + 48;
            i++;
        }
        else
        {
            hexaDeciNum[i] = temp + 55;
            i++;
        }

        n = n/16;
    }


    // printing hexadecimal number array in reverse order
    for(int j=i-1; j>=0; j--){
        //cout << hexaDeciNum[j] << "\n";

        if (hexaDeciNum[j] == 'A' or hexaDeciNum[j]=='B' or
                    hexaDeciNum[j] == 'C' or hexaDeciNum[j] == 'D' or
                    hexaDeciNum[j] == 'E' or hexaDeciNum[j] == 'F' or
                    hexaDeciNum[j] == '1' or hexaDeciNum[j] == '0' ) {
                    answer = 1;
                }


}

    if (answer == 1){
        return hexaDeciNum;
    }
    else {
        return "ERROR";
    }
}


int main() {

    string word = "257";

    cout <<  solution(word);

    return 0;

}

最好不要在功能中包含用户输入和打印。这将使测试和重用更容易:

def mys():
    x = input("Enter a number: ")
    for i in range(2,x):
        r = x % i
        if r == 0:
            print(i)
mys()