Python 如何在命令行中执行此操作(我正在使用spyder)
编写一个python程序,通过命令行参数接受10个数字,并计算其中的素数之和。 这是我的问题。 我试过这个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
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)。谢谢。