我有一个我想要制作的程序,它将显示数字的所有因素或者说它是素数。这是一个简单的程序,但我有一个主要问题。一旦打印输入数字的所有因子,它总是不返回。我已经尝试了多种方法来摆脱它,但没有任何东西可以解决其他问题。代码如下。
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
无论我做什么,我都无法打印无。
答案 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()