Python- 将经过验证的变量从函数返回到主程序

Python- Return a verified variable from a function to the main program

提问人:Steve 提问时间:2/17/2023 最后编辑:DjaouadNMSteve 更新时间:2/18/2023 访问量:35

问:

任何人都可以指导我一个示例,其中可以将用户输入变量发送到检查函数或模块并返回经过验证的输入,分配/更新初始化的变量?我正在尝试重新创建我多年前在 C++ 中所做的一些事情,我正在尝试验证一个整数!在这种特殊情况下,建筑框架连接中输入的螺栓数量是这样的。任何方向都将不胜感激,因为我的互联网搜索和搜索我的 Python A Crash Course 副本尚未提供任何信息!非常感谢有人会对 Python 新手感到仁慈! 问候史蒂夫

下面是我对此的无数次尝试之一,真的我只想放弃并使用 While 和函数调用。在这个中,显然我不允许在 str 和 int 之间放置 >(第 4 行),这破坏了我强迫 N 为 int 的尝试 - 倒数第二行!

def int_val(N):
    #checks
    # check 1.  n > 0 for real entries
    N > 0
    isinstance(N, int)
    N=N
    return N
    print("N not ok enter again")
    #N = input("Input N the Number of bolts  ")
    

# Initialiase N=0
#N = 0

# Enter the number of bolts
N = input("Input N the Number of bolts  ")
int_val(N)

print("no of bolts is", N)
函数 验证输入 while-loop 整数

评论

0赞 Community 2/17/2023
请澄清您的具体问题或提供其他详细信息,以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。
0赞 Steve 2/18/2023
感谢 DjaouadNM,rhurwitz 已经解决了这个问题,用非常好的代码来保存以备将来用于验证整数输入的任务 - 可能要保存掉。祝一切顺利的史蒂夫

答:

0赞 rhurwitz 2/17/2023 #1

你有什么想法吗?它利用了这样一个事实,即如果可能,使用内置函数会将字符串转换为整数,否则会抛出 .intValueError

def str_to_posint(s):
    """Return value if converted and greater than zero else None."""
    try:
        num = int(s)
        return num if num > 0 else None
    except ValueError:
        return None

while True:
    s = input("Enter number of bolts: ")
    if num_bolts := str_to_posint(s):
        break
    print(f"Sorry, \"{s}\" is not a valid number of bolts.")
    
print(f"{num_bolts = }")

输出:

Enter number of bolts:  twenty
Sorry, "twenty" is not a valid number of bolts.
Enter number of bolts:  20
num_bolts = 20

评论

0赞 Steve 2/18/2023
完美效果真的很好,谢谢!我在这里学到了一些新命令!祝一切顺利的史蒂夫
0赞 rhurwitz 2/21/2023
很高兴听到它!当你有机会时,请继续接受答案,以便可以关闭问题。
0赞 Steve 2/18/2023 #2

定义str_to_posint: “”“如果转换且大于零,则返回值 None 尝试: num = 整数 return num if num > 0 else None 除了 ValueError: 返回 无

而 True: s = input(“输入螺栓数量:”) 如果num_bolts := str_to_posint: 破 print(f“对不起,”{s}“不是有效的螺栓数。

打印(f“{num_bolts = }”)

评论

0赞 Community 2/25/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。