Python 关于条件的撰写

img

img


程序主体已经搞定
如何才能使程序robust enough,在输入小于等于1,及非整数类型的input后能提示输入错误,并提示重新输入直至输入qualified number,并重新运行程序
本人已经被条件、判断、循环语句整不会了
请回答问题的朋友直接写成代码并附上井号解释,感谢

img


修改了一下,无法解决else中怎样让新的N回到主体语句中执行,也无法解决如何能无限次input直至input符合条件


# 问题5(本次作业的20%):编写一个程序,允许用户输入整数N,并打印所有小于N的素数。
# 例如,当用户输入N=10时,程序应输出小于10的素数包括:程序每行最多应输出8个素数。
# 您的程序还应该足够健壮,能够处理可能的不正确输入(例如,userInputs字符串
n = input("Please input an integer larger than 1:")
for i in n:
    if i < '0' or i > '9' or n <= '1':#小于1 或者字符串里面有非数字
        n = input("The num is null,Please input an integer larger than 1")#重复输入
print(f"The prime numbers smaller than {n} include:")#输出提示
num1 = int(n)#转成整数
lit = []
if num1 == 2:
    lit.append(num1)
else:
    for i in range(2, num1):
        k = 0
        for j in range(1, i+1):#判断是否为素数
            if i % j == 0:
                k += 1
        if k == 2:
            lit.append(i)
a = 1
for x in lit:
    if a % 8 != 0:#单行输出8个数字
        print(x,end="\t")
        a += 1
    else:
        print(x)
        a = 1

N = int(input())
while N<=1:
N = int(input())

N=input("please input an integer number larger than 1:")
qualified= 0 #这个用来判断是否输入正确
while not qualified:
if type(eval(N))!=type(1) or eval(N)<=1:
print("input error")
N = input("please input an integer number larger than 1:")
else:
qualified=1 #如果输入正确就设置为1,以跳出循环

def getPrime():
    N = input('Please input an integer greater than 1 \n')
    try: #使用try,把不能转换成整数的字符串排除掉
        n = int(N)
        if n > 1: #判断输入的数是正整数
            print('The prime numbers smaller than ', n, ' include:')
            primeCount = 1 # 记录每行输出的素数个数,题目要求每行最多输出8个
            for i in range(2, n):
                for j in range(2, i+1):
                    if i % j == 0:
                        break
                if j == i:
                    if primeCount != 8: # 不到8个就输出空格
                        print(i, end = ' ')
                        primeCount += 1
                    else:               # 到8个了就换行
                        print(i)
                        primeCount = 1
        else:
            print('please input integer greater than 1')
    except :
        print('inputs are not numbers')


while True:
    getPrime()

while循环啊,一直重复即可

# 输入
while True:
    try:
        N = int(input("Please input an integer larger than 1: "))
        if N>1:
            break
    except:
        print("Your input is invalid, please input again")

# 主程序
print("The prime numbers smaller than", N, "include: ")
prime = set(range(2,N)) | {2}
for i in range(2,N//2+1):
    prime -= set(range(2*i,N,i))
prime = list(prime)

# 输出
n = len(prime)
for i in range(n//8+1):
    print(*prime[i*8:(i+1)*8])