while ture try-except

本文介绍了一个简单的Python程序,用于将狗狗的年龄转换为人类年龄的等效值,并通过while True循环及try-except结构处理异常输入,确保用户输入有效的年龄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

age = int(input("请输入你家狗狗的年龄: "))
print("")
if age < 0:
    print("你是在逗我吧!")
elif age == 1:
    print("相当于 14 岁的人。")
elif age == 2:
    print("相当于 22 岁的人。")
elif age > 2:
    human = 22 + (age -2)*5
    print("对应人类年龄: ", human)

### 退出提示
input("点击 enter 键退出")
print("=======欢迎进入狗狗年龄对比系统========")
while True:
    try:
        age = int(input("请输入您家狗的年龄:"))
        print(" ")
        age = float(age)
        if age < 0:
            print("您在逗我?")
        elif age == 1:
            print("相当于人类14岁")
            break
        elif age == 2:
            print("相当于人类22岁")
            break
        else:
            human = 22 + (age - 2)*5
            print("相当于人类:",human)
            break
    except valueerror:
        print("输入不合法,请输入有效年龄")
#退出提示
input("点击 enter 键退出") 

有点弄不懂while ture try -except,查了查,参考别人的资料:


try语句按照如下方式工作;
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。


if-else场景

if fun():
    do something1
else:
    do something2

如果fun()抛出异常表示假,那么可以改写成如下形式

try:
    fun()
    do something1
expect:
    do something2

类似的while场景

while fun():
    do something

如果fun()抛出异常表示假,那么可以改写成如下形式

while True:
    try:
        fun()
        break
    expect:
        do something

在JAVA中,我也找到了相关的表达方式:
目标:判断用户输入的数据是否是数字,如果不是,提示用户重新输入,使用while true循环实现

问题:当输入第一个数据是字符时,catch块捕获到异常执行完catch块后循环输出
“输入的内容包含非数字的字符,请重新输入”

原因:Scanner声明在while循环外,当第一次出现异常后没有清空Scanner中的数据,

解决方法:将Scanner写到循环内声明

package com;

import java.util.Scanner;

public class ExceptionDemo1 {
    public static void main(String[] args) {
        int a=0;
        int b=0;
                Scanner sc=new Scanner(System.in);//这里出问题了,声明写到循环内
        while(true){
            try {
//              Scanner sc=new Scanner(System.in);
                System.out.println("请输入被除数");
                a=sc.nextInt();
                System.out.println("请输入除数");
                b=sc.nextInt();
            } catch (Exception e) {
                System.out.println("输入的内容包含非数字的字符,请重新输入");
            }
            try {
                System.out.println("商是"+(a/b));
            } catch (Exception e) {
                System.out.println("NaN");
            }
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值