问题描述
我正在学习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."
任何输入都赞赏!! :)
1楼
不知道我确切知道您在做什么,但这可能会有所帮助:
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))
2楼
首先,在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")
3楼
如果您的数字将是来自用户的raw_input,则可以在进入while循环之前分配数字,或者将参数传递给函数来处理该数字。
4楼
您想要的是:
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
是最后输入的值。
5楼
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:...块用于确定值是否为整数。
6楼
尝试将问题分解为多个部分,获取价值并计算“三次幂”。
您还需要确保将用户输入转换为整数。
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