Python 2个代码有效,第三个代码无效';T
这里是初学者。:) 所以我想实现的是: 用户输入一个数字。它会吐出数字的^3。如果用户输入一封信,它会打印出一条错误消息 代码#1非常有效:Python 2个代码有效,第三个代码无效';T,python,Python,这里是初学者。:) 所以我想实现的是: 用户输入一个数字。它会吐出数字的^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 e
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\u输入(“请输入一个整数”)
,并将其替换为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)
有人能解释一下原因吗?当
循环时,中断退出,此时数字仍然是输入的字母,因此尝试将其设置为int时会出错中断退出循环,在这一点上,number
仍然是输入的任何字母,因此尝试将其设置为int
时会出现错误,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()
#...
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()
#...
如果是这样的话,它至少应该打印出一个你输入的字母。请重试
然后终止?@user3386440您是对的,print
语句在循环中断之前运行一次。我编辑了答案以澄清这一点。如果是这样的话,它是否应该至少打印出一个您输入的。请重试
然后终止?@user3386440您是对的,print
语句在循环中断之前运行一次。我编辑了答案以澄清这一点。