我正在学习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 !! :)
答案 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