首页 > 解决方案 > 我不知道为什么我的代码的结果不一样?

问题描述

这是说明:

这个问题涉及可以用作键的数字:如果两个数字中最大的一个是素数,则两个数字被认为是键。素数是能被 1 和自身整除的数。你的任务是编写一个 python 程序,从用户那里读取两个整数(如上所述)并检查它们是否是有效的键。如果用户输入浮点数,则必须进行适当的转换。如果用户输入一个非数字数字,则必须使用适当的错误捕获允许用户重复该过程,只要她/他愿意

这是我对答案的尝试,但这段代码的答案不断变化,我不知道为什么......

i=1 

while i!=0: 
    int1=int(input("dear user please enter the 1st number ")) 
    int2=int(input("dear user please enter the 2nd number")) 
    largest=max(int1 , int2) 

    if largest >1: 
        for i in range (2, int(largest/2)+1): 
            if ( largest % i )== 0: 
                print("it cannot be a key ", largest) 
                break 
            else: 
                print("the key is ", largest) break print (" enter another keys")

标签: python

解决方案


如果您的意思是它在同一次运行中打印“有效密钥”和“无效密钥”,那是因为它会遍历 i 的每个值,例如27 % 3 = 0,但是27 % 2 != 0对于 i = 3,它会打印它是有效密钥。

要解决此问题,您可以这样做:

valid_key = False
   
   if largest > 1:   for i in range(2, (int(largest/2)) + 1):
       if (largest % i) == 0:
         valid_key = False
         break
       else:
         valid_key = True
   
   if(valid_key):   
     print(largest, "is a valid key" 
   else:  
     print(largest, "is not a prime number")

推荐阅读