初学者。 :)
所以我想实现的是:
用户输入一个号码。它吐出了数字的^ 3。如果用户输入了一个字母,它会输出一条错误信息。
代码#1效果很好:
def thirdpower():
try:
number = int(raw_input("Enter a number : "))
n=number**3
print "%d to the 3rd power is %d" % (number,n)
except ValueError:
print "You must enter an integer, please try again."
thirdpower()
thirdpower()
但我想用while
语句尝试做同样的事情,因为我想练习它。我知道这种方式有点冗长,但我认为这是一种很好的做法。
number=raw_input("Please Enter an integer")
while number.isalpha():
print "You have entered letter. Please try again"
number=raw_input("Please Enter an integer")
n=int(number)**3
print "%d to the 3rd power is %d" %(int(number), n)
我的问题是这个。如果我删除number=raw_input("Please Enter an integer")
声明下的while
并将其替换为break
,则代码无效。
这就是我的意思:
number=raw_input("Please Enter an integer")
while number.isalpha():
print "You have entered letter. Please try again"
break #This break here ruins everything :(
n=int(number)**3
print "%d to the 3rd power is %d" %(int(number), n)
任何人都可以解释原因吗?
答案 0 :(得分:4)
break
退出while
循环,此时number
仍然是输入的任何字母,因此您尝试将其设为int
时出错。
答案 1 :(得分:2)
break
语句跳出循环。
在这种情况下,如果用户输入一个字母,循环会运行print
语句,然后立即到达break
并终止而不是反复循环。 (break
当你把它放在一个程序并不总是到达的if语句中时更有用。)
但是使用break
并不会阻止程序的其余部分运行,因此Python仍然会尝试运行第6行。由于number
变量包含一个字母,程序崩溃时它会崩溃尝试将其转换为数字。
如果用户输入了一封信,您可能会尝试结束该程序。在这种情况下,您可以使用内置的sys
模块执行以下操作:
import sys
number=raw_input("Please Enter an integer")
if number.isalpha():
print "You have entered letter. Please try again"
sys.exit()
#...