python - 我不知道为什么我的代码的结果不一样?
问题描述
这是说明:
这个问题涉及可以用作键的数字:如果两个数字中最大的一个是素数,则两个数字被认为是键。素数是能被 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")
解决方案
如果您的意思是它在同一次运行中打印“有效密钥”和“无效密钥”,那是因为它会遍历 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")
推荐阅读
- javascript - Laravel 7 原生 JavaScript 调用 API
- sql - 点燃默认表
- mysql - LEFT JOIN & SUBQUERY 与空列/ null 作为结果
- azure - 限制 Azure Key Vault 对 Web 应用和函数的访问
- css - 响应式 CSS 适用于移动设备,但不适用于桌面
- node.js - Mongoose - 使用 unique: true 默认值:null
- reactjs - 编译时带有警告。/home/hadrnet/Desktop/app/frontend/node_modules/react-native-webrtc/RTCView.js
- corda - 集成测试期间无法解析匿名方
- css - Angular mat 卡不会包装 ngx-charts 元素
- c# - 当我在 C# 中的 switch-case 中时,如何打破“while”循环?