[英]2 codes work, the third doesn't
初学者在这里。 :)
所以我要实现的是这样的:
用户输入一个数字。 它吐出数字的^ 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)
我的问题是这个。 如果我在while
语句下删除了number=raw_input("Please Enter an integer")
并将其替换为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)
谁能解释为什么?
break
退出while
循环,此时number
仍然是输入的字母,因此尝试将其设置为int
出错。
break
语句跳出循环。
在这种情况下,如果用户输入字母,则循环将运行print
语句,然后立即到达break
并终止,而不是一遍又一遍地循环。 (当将break
放在程序并不总是可以到达的if语句中时, break
更为有用。)
但是使用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()
#...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.