风百默 发表于 2022-3-2 20:34:26

这个程序为什么执行不了?


def isPrime(n):
    for i in range(2,n):
      if n%i == 0:
            return False
            break
      else:
            return True
def listPrime(*num):
    list1 = list(filter(isPrime,num))
    return list1
def printPrime(n):
    counts = 0
    for i in range(1,n+1):
   if isPrime(i) == True:
      print(i,end=' ')
      counts += 1
      if counts%10 == 0:
            print()                     
strdata=input("请输入任意个数整数(以空格分隔):")
data =
data = tuple(data)
s = list(map(lambda x:x**2,listPrime(data)))
s = sum(s)
print("你输入的数据中所有素数的平方和为:{}".format(s))
print("200以内的素数有:")
printPrime(200)

isdkz 发表于 2022-3-2 20:34:27

因为你的 data 没有解包,所以传进去的是一个元组,

所以你的listPrime中可变参数 num 打包后是一个包含元组的元组,

故对你的代码修改如下:(修改了第二十二行)
def isPrime(n):
    for i in range(2,n):
      if n%i == 0:
            return False
            break
      else:
            return True
def listPrime(*num):
    list1 = list(filter(isPrime,num))
    return list1
def printPrime(n):
    counts = 0
    for i in range(1,n+1):
   if isPrime(i) == True:
      print(i,end=' ')
      counts += 1
      if counts%10 == 0:
            print()                     
strdata=input("请输入任意个数整数(以空格分隔):")
data =
data = tuple(data)
s = list(map(lambda x:x**2,listPrime(*data)))   # 这里 data 加个 *
s = sum(s)
print("你输入的数据中所有素数的平方和为:{}".format(s))
print("200以内的素数有:")
printPrime(200)

云龙烛火 发表于 2022-3-2 21:20:33

有报错信息吗?

风百默 发表于 2022-3-3 13:47:52

isdkz 发表于 2022-3-2 21:34
因为你的 data 没有解包,所以传进去的是一个元组,

所以你的listPrime中可变参数 num 打包后是一个包含 ...

谢谢😊

isdkz 发表于 2022-3-3 13:49:31

风百默 发表于 2022-3-3 13:47
谢谢😊

不客气{:5_109:}
页: [1]
查看完整版本: 这个程序为什么执行不了?