测试有效输入 Python

2024-04-03

因此,我有一个完成的程序,它接受带有银行帐户信息的输入文件并对其进行解析并允许使用一些不同的实用程序。

其中一个实用程序是将事务添加到“数据库”(只是一个日志文件)。

程序提示用户输入“w”或“d”,然后输入一个金额(浮点数)。这代表存款或取款 X 金额。

我想知道如何确保用户输入“w”或“d”以及正确的金额(数字)。

所以,我决定具有上述条件的 while 循环可以工作,但是我很难让它 100% 工作

我最初有:

while input1 is not ("w" or "d")

其中 input1 是用户输入的第一个输入(w 或 d)

但是,我还想检查一个号码是否存在。

我的想法是将字符串输入转换为浮点数,然后检查它,但我不知道如何检查这是否正确,因为转换和检查类型不会告诉我太多信息。

我还如何检查用户是否输入了某种数字。

因此,重申一下,如果用户没有输入,我希望程序重新提示输入:

A) A w 或 d B) 一个数字(int/float)

Thanks


表达方式("w" or "d")将始终评估为"w"。一般来说,在这里你想要一个in:

while input1 not in ("w", "d"):
    ...

就处理输入为数字的情况而言,这是辅助函数的工作:

def string_is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

现在您可以将其与上面的内容一起使用,将整个内容组合在一起:

while (not string_is_number(input1)) and (input1 not in ("w", "d")): ...

实际上可以进一步简化:

while not (string_is_number(input1) or (input1 in ("w", "d"))): ...

现在有一种完全不同的方法,您实际上可以使用递归函数来完成此类事情。将其与 python 的异常处理相结合,我们也许可以用几行代码组合出一个非常优雅的解决方案:

def prog_loop():
    # prompt for user's input here:
    input1 = raw_input("Enter a number, or 'w' or 'd':")
    # See if we got a number
    try:
        number = float(input1)
    except ValueError:
        # Nope, wasn't a number.  Check to see if it was in our
        # whitelisted strings.  If so, break early.
        if input1 in ('w', 'd'):
            return function_handle_w_d(input1)
    else:
        # Yes, we got a number.  Use the number and exit early
        return function_handle_number(number)
    # haven't exited yet, so we didn't get a whitelisted string or a number
    # I guess we need to try again...
    return prog_loop()

只要您的用户不输入错误输入 1000 次,此操作就会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试有效输入 Python 的相关文章

随机推荐

  • 如何在 IntelliJ 中移动工具栏?

    如何将 IntelliJ 中的工具栏从右上角移动到左上角 单击主菜单 查看 工具栏
  • JQuery 设置本地存储变量

    我在获取本地存储变量来存储正确的值时遇到一些问题 它的要点是我想显示局部变量的内容 然后如果用户单击 它会从 xml 文件中提取数据 并将其保存到局部变量中 问题是 它没有正确保存到局部变量 我尝试了多种语法来让它工作 但我没有想法 它的测
  • 有元数据驱动的 UI 示例代码吗?

    我正在设计一个使用元数据驱动 UI 的 net windows 窗体应用程序 除了寻找http msdn microsoft com en us library ms954610 aspx http msdn microsoft com e
  • 通过 javascript 录制网站的内部音频

    i made 这个网络应用程序 https sky music herokuapp com songComposer html为了创作音乐 我想添加一个功能来将作品下载为 mp3 wav whateverFileFormatPossible
  • java.lang.OutOfMemory错误:

    我正在尝试根据从数据库检索的字节创建视频文件 该程序在几个小时前就运行良好 上传大文件后 当我尝试检索它时 它会产生错误java lang OutOfMemoryError 我的代码是 conn prepareConnection Stri
  • SVG、文本、固定宽度/高度的字体

    我试图让 SVG 文本 元素适合 svg 矩形 元素 例如在下面的示例中 我使用了 5 个字符的等宽文本 字体大小为 100px 并且我希望有一个靠近文本的边框 但文本右侧有一个空白
  • Spring AMQP - 使用带 TTL 的死信机制进行消息重新排队

    就像是 休斯顿 我们这里有问题 在第一次尝试处理事件失败后 我需要安排 延迟消息 5 分钟 我在这种情况下实现了死信交换 失败时的消息将路由至 DLX gt 重试队列 并在 TTL 为 5 分钟后返回工作队列以进行另一次尝试 这是我正在使用
  • 安装程序启动时间长 - 在 wpWelcome 之前添加对话框?

    我使用 Inno Setup 创建的安装程序大小约为 850 MB 包含约 7000 个文件和 890 个文件夹 未压缩大小为 1 98 GB 当开始安装过程时 之后Windows UAC 对话框出现后 安装程序的图标为空Taskbar约
  • 如何在Python OpenCV中删除轮廓内部的轮廓?

    Python中的OpenCV提供了以下代码 regions hierarchy cv2 findContours binary image cv2 RETR LIST cv2 CHAIN APPROX SIMPLE for region i
  • Android:无法找到或加载主类org.gradle.wrapper.GradleWrapperMain

    我正在尝试在 GitLab CI 上构建我的项目 但不幸的是 我在运行器中不断收到此错误 Error Could not find or load main class org gradle wrapper GradleWrapperMai
  • 如何删除/卸载嵌套的反应组件

    我想卸载单个反应组件 该组件属于总共包含三个组件的父组件 父组件有这个渲染函数 render function return div div
  • 使用 scrapy 抓取多个页面

    我正在尝试使用 scrapy 抓取多个网页 页面的链接如下 http www example com id some number 在下一页中 末尾的数字减少了1 所以我正在尝试构建一个蜘蛛 它可以导航到其他页面并抓取它们 我的代码如下 i
  • Rails 字体 CORS 政策

    我无法为 CORS 策略加载此字体 Folder app assets fonts Inter UI var woff2 Error 访问字体位于 http localhost 3000 assets Inter UI var e2e323
  • android中处理html webview的onclick功能

    我正在尝试处理 android referred 中 html 的 onclick在此输入链接描述 https stackoverflow com questions 4065312 detect click on html button
  • iOS 中如何将代码块分派到同一个线程?

    问题的主要方面 这是关于 iOS 的 我能否以某种方式分派代码块 使它们全部 a 在后台运行并且 b 在同一个线程上运行 我想在后台运行一些耗时的操作 但这些操作必须在同一线程上运行 因为它们涉及资源 而不能在线程之间共享 如果需要 更多技
  • 在 ASP.NET Core 中,如何在Configure() 中使用在ConfigureServices() 中设置的服务?

    我编写了一项有助于配置的服务 该服务在 Startup 类的 ConfigureServices 方法中设置为 public void ConfigureServices IServiceCollection services servic
  • Java JComboBox 自动完成[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JSF 服务层

    我不确定我在 JSF 中使用 MVC 环境的方法是否是最好的方法 因为我试图充分利用 JSF 所以我想知道我的服务层 或模型 用 MVC 术语来说 应该如何 设计 我知道视图与控制器的比例应该是 1 比 1 排除例外 现在我应该以什么方式设
  • 从文件中 read() - 阻塞行为与非阻塞行为

    假设我们使用以下命令打开了一个文件fopen 并从收到的文件指针中 使用以下命令获取文件描述符fileno 然后我们做很多 gt 10 8 随机read 该文件中相对较小的块 大小在 4 字节到 10 KB 之间 这是预期的行为吗read
  • 测试有效输入 Python

    因此 我有一个完成的程序 它接受带有银行帐户信息的输入文件并对其进行解析并允许使用一些不同的实用程序 其中一个实用程序是将事务添加到 数据库 只是一个日志文件 程序提示用户输入 w 或 d 然后输入一个金额 浮点数 这代表存款或取款 X 金