gpt4 book ai didi

python - (Python)在用户定义的函数中尝试并除外

转载 作者:行者123 更新时间:2023-12-03 08:04:50 27 4
gpt4 key购买 nike

我从事过许多项目(学校项目,我不太先进),并且发现在许多要求用户输入整数或十进制(浮点数)值的程序中,我需要使用在while循环中使用“try-except”语句,以确保用户输入了所需的值类型。
例如:

def main():

userValue = input("Please enter an integer: ")

while(True):

try:
userValue = int(userValue)
break
except:
userValue = input("That is not an integer, try again: ")

print("The integer you entered is: " + str(userValue))

main()

# Input: SADASD (A non-integer value)
# Output: "That is not an integer, try again: "
# Second-Input: 3
# Second-Output: "The integer you entered is: 3"

可以理解,在需要多次用户输入的程序中重复键入整个代码部分并不是很有效。因此,了解到,用户定义的功能在需要多次执行一项操作时会有所帮助。考虑到这一点,我在while循环中使用相同的try-except语句定义了自己的函数。但是,现在,当我使用该函数时,它不再打印以前的相同输出,而是打印出用户输入的第一个值。
例如:
def valueCheck_Integer(userInput):
while(True):

try:
userInput= int(userInput)
break
except:
userInput = input("That is not an integer, try again: ")

def main():

userValue = input("Please enter an integer: ")

valueCheck_Integer(userValue)

print("The integer you entered is: " + str(userValue))

main()

# Input: SADASD (A non-integer value)
# Output: "That is not an integer, try again: "
# Second-Input: SASASD
# Second-Output: "That is not an integer, try again: "
# Third-Input: 3
# Third-Output: SADASD (The first value that the user Input, instead of 3)
有人可以向我解释为什么会发生这种情况,以及一些解决方法吗?
谢谢!

最佳答案

期望该函数获取/检查/返回整数而不是检查您已经拥有的输入可能会更容易。您可以将用于询问值的字符串传递给它(也可以传递错误字符串)。它将一直询问直到成功,然后返回您想要的号码:

def get_integer(question):
while(True):
try:
return int(input(question))
except ValueError:
question = "That is not an integer, try again:"

def main():
userValue = get_integer("Please enter an integer: ")
print("The integer you entered is: " + str(userValue))

main()

关于python - (Python)在用户定义的函数中尝试并除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62724870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com