Python函数和函数调用问题

时间:2018-12-31 08:27:42

标签: python function

我正在尝试使用这些功能查找素数。当我归还时;输出打印;

git checkout feature git fetch git rebase origin/develop 和我输入的数字

git push --force
# that will update your existing PR, or make a new one

2 个答案:

答案 0 :(得分:0)

您的函数正在执行三件事:

  • 测试其输入是否为素数
  • 以一种人类友好的方式
  • 打印该测试的结果
  • 返回其输入

要使其按自己的意愿做,请返回人类友好的输出而不是输入。

def my_function(number):
    if number == 1:
        result = "Not a Prime Number."
    elif number == 2:
        result = "Prime Number"
    for i in range(2, number):
        if number % i == 0:
            result = "Not a Prime Number"
            break
        elif number % i != 0:
            result = "Prime Number"
            break
    return result

这很好,但是如果函数只做一件事-在这种情况下测试素数-而不是两次-测试素数 并为人类读者格式化结果,则通常它更可重用。

我们可以修改函数以返回布尔值-TrueFalse-并在函数外部进行输出格式化。

def my_function(number):
    if number == 1:
        result = False
    elif number == 2:
        result = True
    for i in range(2, number):
        if number % i == 0:
            result = False
            break
        elif number % i != 0:
            result = True
            break
    return result

>>> number = 1
>>> print(number, 'is', 'a prime number' if my_function(number) else 'not a prime number')
1 is not a prime number   
>>> number = 2
>>> print(number, 'is', 'a prime number' if my_function(number) else 'not a prime number')                                                                                         
2 is a prime number  

最后,您的逻辑有误。如所写,循环仅运行一次,因为两个测试之一将始终成功。

答案 1 :(得分:-1)

print(my_function(number))

在此语句中,您将打印从函数my_function返回的内容,并从my_function返回输入数字。

代替上面的语句,只需直接使用如下所示的调用my_function即可:

number=int(input("Please enter the number :"))

def my_function(number):
  if number==1:
   print("Not a Prime Number.")
  elif number==2:
   print("Prime Number")
  for i in range(2,number):
    if number%i==0:
     print("Not a Prime Number")
     break
    elif number%i!=0:
     print("Prime Number")
     break
  return number ### You are returning the number here.

my_function(number) #Just don't print the return value here

只需不打印从my_function返回的值,它就可以解决您的问题。