Python 2个代码有效,第三个代码无效';T

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

这里是初学者。:)

所以我想实现的是:

用户输入一个数字。它会吐出数字的^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\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
语句在循环中断之前运行一次。我编辑了答案以澄清这一点。