当前位置: 代码迷 >> python >> While语句和def函数
  详细解决方案

While语句和def函数

热度:18   发布时间:2023-06-19 09:13:19.0

我正在学习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."

任何输入都赞赏!! :)

不知道我确切知道您在做什么,但这可能会有所帮助:

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

首先,在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")

如果您的数字将是来自用户的raw_input,则可以在进入while循环之前分配数字,或者将参数传递给函数来处理该数字。

您想要的是:

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是最后输入的值。

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:...块用于确定值是否为整数。

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

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

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
  相关解决方案