声明和def功能

时间:2014-03-09 17:55:32

标签: python

我正在学习def函数并编写了这段代码:

def thirdpower(number):
    n=number**3
    print "%d to the 3rd power is %d" % (number,n)
thirdpower(input("Enter a number"))

但是现在,我想添加条件语句(可能使用while语句),这样如果用户将输入留空,它将打印出错误,并将重新询问用户。

到目前为止,我无法弄清楚:

def thirdpower(number):
        n=number**3
while True:
    if len(thirdpower())==0:
        print "%d to the 3rd power is %d" % (number,n)
        thirdpower(input("Enter a number"))
    break
else:
    print "you entered a blank, please try again."

任何输入都是apreciated !! :)

6 个答案:

答案 0 :(得分:0)

我不确定我到底知道你到底要做什么,但这可能会有所帮助:

def thirdpower(n):
    return n**3
number = None
while not number:
    try:
        number = float(raw_input("Enter a number "))
    except:
        number = None
print "%d to the 3rd power is %d" % (number, thirdpower(number))

答案 1 :(得分:0)

首先,在你的while循环中使用break语句是一种不好的做法(更不用说while True),你应该始终关注 有条件会自行退出

你可以做这样的事情

user_input = input("enter a number")
while user_input == "" : #or other conditions you want to put
    print("error message")
    user_input = input("enter a number")

答案 2 :(得分:0)

如果您的号码是来自用户的raw_input,那么您可以在进入while循环之前指定数字,或者将参数传递给函数句柄。

答案 3 :(得分:0)

你想要的是这个:

while True:
    try:
        number = int(input('Enter a number: '))
        break
    except ValueError:
        print('Please enter an integer.')

print('%d to the 3rd power is %d' % (number, thirdpower(number)))

try语句中,如果出现问题,它会查找except块。因此,在您的情况下,当用户输入无法转换为整数(例如非数字字符串或空格)的内容时,它将失败并生成ValueError。然后它将查找相应的except块,并执行嵌套在其中的语句。

由于它位于while循环中,这将继续发生,直到找到输入有效(没有发生异常)并且while循环被破坏,number是最后输入的值。

答案 4 :(得分:0)

Python函数是递归的,使用此函数:

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()

try:... except:... blocks用于确定值是否为整数。

答案 5 :(得分:-1)

尝试将问题分解为多个部分,获取值并计算“thirdpower”。

您还需要确保将用户输入转换为整数。

while True:
    try:
        user_val = int(raw_input("Enter a number: "))
        break
    except ValueError:
        print "You didn't enter a valid integer"
thirdpower(user_val)

如果您想要浮点值,只需将“int”更改为“float”即可。您可能还想从thirdpower

返回值
def thirdpower(number):
    n = number**3
    print "%d to the 3rd power is %d" % (number, n)
    return n