Python 如何在命令行中执行此操作(我正在使用spyder)

Python 如何在命令行中执行此操作(我正在使用spyder),python,Python,编写一个python程序,通过命令行参数接受10个数字,并计算其中的素数之和。 这是我的问题。 我试过这个 for Number in range (1, 101): count = 0 for i in range(2, (Number//2 + 1)): if(Number % i == 0): count = count + 1 break if (count == 0 and Number != 1

编写一个python程序,通过命令行参数接受10个数字,并计算其中的素数之和。 这是我的问题。 我试过这个

for Number in range (1, 101):
    count = 0
    for i in range(2, (Number//2 + 1)):
        if(Number % i == 0):
            count = count + 1
            break

    if (count == 0 and Number != 1):
        print(" %d" %Number, end = '  ')
但这是幼稚的,只适用于给定的范围。我想在命令提示符中输入10个数字,它应该在我的输入中找到素数之和。我尝试使用import sys并给出sys.args[input],但它显示错误。 有人能帮我吗?我刚刚开始学习编码。 提前感谢:)

一个简单的例子:

sum = 0
for count in range(1,11):
  sum += int(input(f'Enter number {count} : '))

print(f'Total sum : {sum}')

解决方案可以是:

import sys

nums = sys.argv


def with_loop():
    total = 0   # to collect the prime numbers
    count = 1   # a counter for the numbers that you entered
    for i in range(10):
        num = int(input("{}. Please enter a number: ".format(count)))
        if num > 1:  # if number is larger than 1, we need to check
            for j in range(2, num):
                if (num % j) == 0:
                    break
            else:
                total += num
        elif num == 1:   # 1 is a prime number
            total += num
        else:   # otherwise the number is negative so we skip.
            pass
        count += 1
    print("\nTotal : {}".format(total))


def with_argv(nums):
    total = 0   # to collect the prime numbers
    count = 1   # a counter for the numbers that you entered
    for i in range(1, len(nums)):
        if int(nums[i]) > 1:  # if number is larger than 1, we need to check
            for j in range(2, int(nums[i])):
                if (int(nums[i]) % j) == 0:
                    break
            else:
                total += int(nums[i])
        elif int(nums[i]) == 1:   # 1 is a prime number
            total += int(nums[i])
        else:   # otherwise the number is negative so we skip.
            pass
        count += 1
    print("\nTotal : {}".format(total))


with_loop()
with_argv(nums)

为了解决这个问题,我将首先定义一个函数来检查一个数字是否为素数。它将只返回布尔值,而不返回其他值

然后我将创建两个列表-一个用于存储用户输入的所有数字,另一个用于存储用户输入的数字中的所有素数。我将使用预定义的函数进行此检查

当素数列表准备就绪时,我将使用sum()方法查找列表项的和,即。用户输入的素数

这是密码-

def isPrime(num):#定义一个函数来检查给定的数字是否为素数
因子=[]
如果num==2:
返回真值
其他:
对于范围内的i(1,num+1):
如果(num%i==0):
因素。附加(i)
如果len(系数)==2:
返回真值
其他:
返回错误
数字=[]#用户输入数字的列表
素数=[]#其中素数的列表
打印(“输入10个数字。\n”)
对于范围(10)内的i:
append(int(输入(f'enternumber{i+1}:'))
#将用户输入添加到数字列表
对于数字中的i:#检查输入的数字是否为素数
如果是(i):
素数。附加(i)
打印(“用户输入的素数之和为”+str(素数之和)))
#sum()方法将iterable中的所有元素相加
这个代码就行了


Spyder使用IPython控制台。这就是问题中提到的命令行。因此,如果您在Spyder中运行代码,IPython控制台将运行此程序。

谢谢。我可以使用什么命令直接在命令提示符中输入?对于终端,假设您在主目录中,您必须使用以下命令:
python或python3 num1 num2 num3等
例如:
python primes.py 1 2 3 5 3 53 35 234 23 52
,但是,如果要使用命令提示符,则必须用_argv注释掉
,并且
with_loop
仍将运行,因为它不需要任何额外的输入,并且已经被调用。如果它回答了您的问题,请将其标记为“答案”,如果您有问题,请毫不犹豫地提出更多问题,祝您编码愉快。首先,感谢您消除疑问。我通过正常执行它来获得输出。但是我尝试使用命令行参数来使用import sys提供输入,但是我得到了错误。请详细说明如何在命令行参数中使用此代码。如果只想使用命令提示符方法,请用_argv(nums)
注释掉
,并且只执行
with_loop()
,循环方法的固定长度为10,因此必须提供10个输入。使用_argv(nums)的方法
在终端或powershell中执行文件后,必须提供许多参数。它与命令提示符一起工作。我使用了_argv(nums)。谢谢。