利用异常语句与fot循环逆序打印五位数

python利用异常语句与fot循环逆序打印五位数字,若不符合要求能主动抛出异常提示并提示用户重输

定义异常类,使用try-catch获取用户输入,然后for循环逆序打印数字即可。

代码如下:

参考链接:


https://www.cnblogs.com/hiwuchong/p/8573081.html

https://www.zadmei.com/zpzcjzdy.html

https://www.fengnayun.com/news/content/147196.html

https://blog.csdn.net/wukai0909/article/details/125032036



# https://blog.csdn.net/lwgkzl/article/details/81059433
# https://www.cnblogs.com/hiwuchong/p/8573081.html
#  https://www.zadmei.com/zpzcjzdy.html

class InputError(ValueError):# 定义异常类
    pass

def checkNum(num): # 检测字符串数字是否是一个五位数的函数
    num=int(num)  #字符串转为int类型
    if num<=9999 or num>=100000:  # 如果数字不是五位数,则抛自定义异常
        raise InputError('数值%s不是一个五位数!' % num)
    

num = input("请输入一个五位数:") #  从输入获取一个数字字符串

while True:  # 循环测试,直到获取到五位数,然后逆序打印后break退出循环
    
    try: # 使用try-except-else 块来完成 数据的检测和逆序打印
        checkNum(num)
    
    except Exception as e:  # 如果 抛了异常,则重新获取输入
            print('Error:',e)
            num = input("请输入一个五位数:")
    else:  # 如果没抛异常,则逆序打印这个五位数
        # https://www.fengnayun.com/news/content/147196.html
        # https://blog.csdn.net/wukai0909/article/details/125032036
        n = list(map(int,num))
        n.reverse()
        for i in n:
            print(i,end='')
        break    
        

img

该回答引用chatgpt:

while True:
    try:
        num = input("请输入一个五位数字:")
        num_int = int(num)
        if num_int < 10000 or num_int > 99999:
            raise ValueError("输入不是五位数字!")
        break
    except ValueError as e:
        print("错误:", e)

for i in range(4, -1, -1):
    print(num[i], end="")
print()


代码解释:

首先进入一个无限循环,直到用户输入符合要求的五位数字为止。在循环中,首先使用 input() 函数获取用户输入,然后使用 int() 函数将输入转换为整数。如果转换后的整数不是一个五位数,则使用 raise 语句主动抛出一个 ValueError 异常,异常的信息是 "输入不是五位数字!"。如果用户输入符合要求,则跳出循环。

接下来使用 for 循环逆序打印数字。循环从 4 到 0,每次迭代减少 1,使用 print() 函数打印数字的倒数第 i 位,其中 end="" 参数表示不换行。

注意,本例中并没有对用户输入的数字进行重复性检查。如果需要避免重复的数字,可以使用一个列表保存已经输入过的数字,然后在输入时检查是否已经存在于列表中。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
以下是一个示例代码,可以实现您的需求:

while True:
    try:
        num = input("请输入一个五位数字:")
        num = int(num)
        if num < 10000 or num > 99999:
            raise ValueError("输入的数字不是五位数字")
        break
    except ValueError as e:
        print("输入错误:", e)

for i in range(4, -1, -1):
    digit = num // (10 ** i) % 10
    print(digit, end="")

在上面的代码中,首先使用一个 while 循环不断输入数字,直到用户输入一个符合要求的五位数字为止。如果用户输入的不是五位数字,则会抛出一个 ValueError 异常,并输出错误信息。

之后使用一个 for 循环逆序遍历数字的每一位,并打印出来。例如,对于数字 12345,循环遍历的结果为 4, 3, 2, 1, 0,分别表示数字的万位、千位、百位、十位和个位。

需要注意的是,上面的代码只是一个示例,可能需要根据实际情况进行修改和扩展。例如,可以添加更多的异常类型和错误提示,以实现更完整的应用程序。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    我能够解决该问题。

    代码示例:

    while True:
        try:
            num = int(input("请输入一个五位数字:"))
            if 10000 <= num <= 99999:
                # 将数字转换成字符串并倒序排列
                num_str = str(num)[::-1]
                # 遍历每个字符并输出
                for i in num_str:
                    print(i)
                break
            else:
                # 抛出异常并提示用户重新输入
                raise ValueError
        except ValueError:
            print("输入不符合要求,请重新输入!")
    

    代码解释:

    1. 使用 while 循环保证用户输入不符合要求时可以多次重新输入,直到输入正确为止。
    2. 使用 try...except 语句捕获 ValueError 异常,当用户输入不符合要求时抛出异常。
    3. 判断用户输入是否为五位数字,并在数字合法的情况下进行后续操作,否则抛出异常并提示用户重新输入。
    4. 将数字转换成字符串,并使用 [::-1] 语法将字符串倒序排列。
    5. 使用 for 循环遍历每个字符并输出。
    6. 当用户成功输出五位数字的每个字符后,使用 break 语句跳出 while 循环,结束程序的运行。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^