首页 > 编程语言 >Python输入验证改进的其他方式

Python输入验证改进的其他方式

时间:2024-07-29 22:27:39浏览次数:15  
标签:验证 Python collatz number while 循环 参数 输入

题目

[题目来源:Python编程快速上手——让繁琐工作自动化(第二版)第三章实践项目,下面的解答程序为我自己完成的,仅供参考。]

编写一个名为collatz()的函数,他有一个名为number的参数。
如果参数是偶数,那么collatz()就输出 number //2 ,并返回该值。 如果参数是奇数,那么collatz()就输出 3 * number + 1,并返回该值。 重复以上步骤,直到参数为1`。
在上一个程序的基础上,添加上,对用户输入内容的验证,要求输入的数字必须是数字。

解答

方法一:(之前的方法)

def collatz(number):
    try:
        while int(number) <= 0:
            number = input("请重新输入一个正整数或输入q退出程序:")
            if int(number) > 0:
                break
            elif number == 'q':
                break
        number = int(number)
        # 判断是否满足条件,如果满足条件,则进行循环
        while number != 1:    # 直达最后的结果为1,则退出循环
            if number % 2 == 0:       # 如果是偶数,则除以2
                number = number // 2
            else:                     # 如果是奇数,则乘以3再加1
                number = 3 * number + 1
            print(number)    # 输出每次循环的结果
    except ValueError:
        if number == 'q':
            print("程序已退出!")
        else:
            print("输入内容不是数字!")

if __name__ == '__main__':
    # 提示用户输入
    number = input("请输入一个整数:")
    collatz(number)    # 对自定义的函数进行调用。

方法二:(使用PyInputPlus模块)

这种方法使用到的PyInputPlus模块为第三方模块,需要先进行安装。
在终端输入,pip install pyinputplus,回车等待其安转完成即可。

'''使用第三方模块,实现输入验证 pyinputplus'''
# 导入第三方模块
import pyinputplus as pyip

# 自定义collatz()函数,参数为number
def collatz(number):
    # 验证输入的数字,是否为正数,不是则重新输入
    while number <= 0:
        number = int(pyip.inputInt("请重新输入一个正整数:"))
        if number > 0:
            break     # 当输入的为正数时,跳出循环
    while number != 1:
        if number % 2 == 0:
            number = number // 2
        else:
            number = 3 * number + 1
        print(number)

# 调用collatz()函数,输入数字
number = pyip.inputInt("请输入一个整数:")
collatz(number)     # 调用collatz()函数

方法三:(循环+isinstance函数)

'''
编写一个名为collatz()的函数,他有一个名为number的参数。
- 如果参数是偶数,那么collatz()就输出 number//2,并返回该值。
- 如果参数是奇数,那么collatz()就输出 3 * number + 1,并返回该值。
- 重复以上步骤,直到参数为1。
'''


def collatz(number):

    '''输入验证,直到输入满足条件结束'''
    # 创建一个循环,直到输入的满足条件跳出循环
    while True:
        try:                 # 尝试将输入的字符转换为整数
            # 设置退出循环的条件
            if isinstance(number, int) and number > 0:
                break    # 当输入的数是整数且大于0时,退出循环
            else:
                number = int(number)    # 尝试将输入的字符转换为整数
                while number <= 0:
                    number = int(input("请重新输入一个正整数:"))
        except ValueError:  # 不可以出现异常,提示重新输入
            number = input("输入错误,请输入一个正整数!")

    '''开始计算,所需要的过程'''
    while number != 1:
        if number % 2 == 0:
            number = number // 2
        else:
            number = 3 * number + 1
        print(number)

# 测试函数
if __name__ == '__main__':
    number = input("请输入一个整数:")
    collatz(number)

标签:验证,Python,collatz,number,while,循环,参数,输入
From: https://blog.csdn.net/zhjx0903/article/details/140782579

相关文章

  • Python的PyInputPlus模块
    PyInputPlus模块简介PyInputPlus模块的功能:PyInputPlus模块是一个Python第三方模块,需要自己对它进行安装。包含与input()函数类似的、用于多种数据(如日期、数字、电子邮箱地址等)的函数。如果,用户输入了无效的内容,例如格式错误的日期或超过预期范围的数字,那么PyInputPlus模......
  • 用Python实现二进制搜索(二分查找)
    二进制搜索(binarysearch,又称二分搜索)是一种快速有效的搜索方法,用于搜索有序列表中的元素。importmathdefbinary_search(sorted_list,target):"""在有序列表sorted_list中查找目标值target的位置使用二分查找算法"""lower_bound=0#初始......
  • 超详细Python教程——使用Hexo搭建自己的博客
    使用Hexo搭建自己的博客对于一个程序员来说,搭建一个属于自己的博客平台是非常有意义的事情。首先,博客可以记录自己的成长历程,也是对自己一段时间学习和工作的总结和沉淀;其他,通过博客可以营销自己,增强自己在互联网或行业内的影响力,为将来更好的职业生涯打一个坚实的基础。前......
  • 超详细Python教程——玩转PyCharm
    玩转PyCharmPyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补全、单元测试、版本控制等等。此外,P......
  • 2024年华为OD机试真题-找出作弊的人-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】  题目描述公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,......
  • Shopee虾皮api python获取虾皮购物平台的商品数据信息 数据采集
    虾皮购物(英语:Shopee)是一个电商平台,总公司设在新加坡,归属于SeaGroup(之前称之为Garena),该企业于2009年由李小冬(ForrestLi)创办。虾皮购物于2015年初次在新加坡推出,现阶段已拓展到马来西亚、泰国、印度尼西亚、越南和菲律宾。虾皮购物为全球华人地区的客户提供线上购物和销售......
  • 2024华为OD机试真题- 亲子游戏Python-C卷D卷-200分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上......
  • 11. 2 用Python开发一个简单的Web服务器
    用Python开发一个简单的Web服务器11.2用Python开发一个简单的Web服务器11.2.1需求分析11.2.2系统设计11.2.3详细设计11.2.4实现11.2.5测试11.2.6部署和维护11.2.7文档和帮助文档11.2.8用户反馈11.2用Python开发一个简单的Web服务......
  • 11.1 用Python开发一个计算器程序
    用Python开发一个计算器程序11.1用Python开发一个计算器程序11.1.1设计思路11.1.2编写代码11.1.3运行与测试11.1用Python开发一个计算器程序在编程的世界里,创建简单的工具如计算器是初学者学习编程语言的一个好方法。Python,由于其简洁的语法......
  • 【C语言】输入、输出函数知识、getchar()、putchar()、 scanf()、printf()
    函数的声明和定义1.1 函数声明1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。2.函数的声明一般出现在函数的使用之前。要满足先声明后使用。3.函数的声明一般要放在头文件中的。1.2C本身是不提供输入输出功能的,需要......