纠结于简单的循环



//我两周前开始学习python,现在这个问题堆积了几天。我需要有人给我一个提示或一些接近解决方案的东西。谢谢你!这是我的代码。

from math import sqrt
# Write your solution here
number = int(input("Please type in a number:"))
while True:
if number > 0:
print(sqrt(number))
break
if number == 0:
print("Invalid number")
break
if number < 0:
print("Exiting...")
break
//Expected output example
Please type in a number: 16
4.0
Please type in a number: 4
2.0
Please type in a number: -3
Invalid number
Please type in a number: 1
1.0
Please type in a number: 0
Exiting..

第一个break语句总是跳出循环,因此您永远不会到达第二个(和第三个if)。您可能希望将其缩进到if语句体的一部分:

from math import sqrt
# Write your solution here
number = int(input("Please type in a number:"))
while True:
if number > 0:
print(sqrt(number))
break
if number == 0:
print("Invalid number")
break
if number < 0:
print("Exiting...")
break

同样,如果您想继续循环直到读取0,您可能需要删除前两个break语句并将输入读取移动到函数中:

from math import sqrt
# Write your solution here
while True:
number = int(input("Please type in a number:"))
if number > 0:
print(sqrt(number))
if number == 0:
print("Invalid number")
if number < 0:
print("Exiting...")
break

if的条件是互斥的,因此一次只能输入一条语句。在更复杂的场景中,如果您只想输入一个if语句,您可能希望使用elifcontinue:

from math import sqrt
# Write your solution here
while True:
number = int(input("Please type in a number:"))
if number > 0:
print(sqrt(number))
continue # continue with next loop iteration, skip anything below
elif number == 0: # only check condition, if first loop condition was false
print("Invalid number")
elif number < 0:
print("Exiting...")
break

编辑:John Gordon正确地指出,你的exitinvalid number的箱子交换了。为了确保这是一个完整的解决方案,我还将合并以下更改:

from math import sqrt
# Write your solution here
while True:
number = int(input("Please type in a number:"))
if number > 0:
print(sqrt(number))
elif number < 0:
print("Invalid number")
elif number == 0:
print("Exiting...")
break

最新更新