【问题标题】:Python - Little beginner code confusionPython - 初学者代码混乱
【发布时间】:2014-05-04 07:24:01
【问题描述】:

这是我必须创建的程序指令: 该程序是警务人员必须为他们所做的每一个班次输入一个“速度区”。在他们输入的答案中,那个速度区必须是一个整数。然后他们会得到第二个问题来填写,询问他们“汽车以什么速度行驶?”。此输入答案也只能是整数。如果汽车行驶的速度比他们之前估算的“速度区”快,那么在他们的班次中,每行驶 1 公里就会被罚款 10 美元。因此,如果汽车超过 10 公里,将被罚款 100 美元。如果汽车行驶的速度低于估算的“速度区”,则不会被罚款。如果任何罚单被罚款,官员必须输入车型名称。即日产、奥迪、法拉利……然后它们都必须被打印出来,设计得像一张警察罚单。除了“速度区”之外,这一切都必须重复。

这是我的代码:

fine=int(0)

un_speed_limit = 0

while not un_speed_limit:

    speed_limit=int(input("What is your speed zone? "))
    try:
        un_speed_limit = int(speed_limit)
    except ValueError:
        print("That is not a number! ")
pass_car_speed=print("\nType '000' to kill program.\n\n")

while pass_car_speed !=000:

    try:
        pass_car_speed=int(input("What speed is the car going? "))
    except ValueError:
        print("Invalid number! ")
    else:
        if pass_car_speed==000:
            break
        if pass_car_speed > speed_limit:
            fine=(pass_car_speed-speed_limit)*10
    if pass_car_speed <= speed_limit:
        print("This car is under the limit. No ticket needed! \n")
    if pass_car_speed > speed_limit:
        name=str(input("What is the car model name? "))
        print("____________________________________________\n")
        print("   | P O L I C E   T I C K E T |   \n")
        print("   | Speed: ",pass_car_speed,"   \n")
        print("   | Fine Cost: ",fine,"    \n")
        print("   | Car Name: ",name,"  ")
        print("____________________________________________\n")

代码停止: 我在使用此代码时遇到的唯一常见错误并需要帮助是此消息

ValueError: invalid literal for int() with base 10: (what ever I typed)

当我没有为“你的速度区是多少?”输入整数时,才会出现这条消息

【问题讨论】:

    标签: python debugging python-3.x error-handling


    【解决方案1】:

    这段代码有很多错误。

    这里是修正版,你应该花点时间分析一下。

    while True:
        try:
            speed_limit = int(input("What is your speed zone? "))
            break
        except ValueError:
            print("That is not a number! ")
            continue
    
    while True:
        print("What speed is the car going?")
        try:
            pass_car_speed = int(input( "Enter speed, or 0 to quit: "))
        except ValueError:
            print("Invalid number! ")
            continue
    
        if not pass_car_speed: # 0 is False, non-zero True
            break # quit loop (and program)
    
        if pass_car_speed <= speed_limit:
            print("This car is under the limit. No ticket needed!")
        else:
            fine = (pass_car_speed - speed_limit) * 10
            name = input("What is the car model name? ")
            print("____________________________________________")
            print("   | P O L I C E   T I C K E T |   ")
            print("   | Speed: ",pass_car_speed,"   ")
            print("   | Fine Cost: ",fine,"    ")
            print("   | Car Name: ",name,"  ")
            print("____________________________________________")
    
    print("Goodbye!")
    

    如果您想了解学习中应重点关注的内容,请告诉我,以免将来出现。

    【讨论】:

    • 非常感谢!你不知道我减轻了多少压力。知道您帮助了某人,您应该面带微笑轻松入睡!再一次感谢你!非常感激。如果你能给我反馈我应该做些什么来专注于学习并在未来避免它们,我会很高兴。
    【解决方案2】:

    您尝试将 speed_limit 转换为 int 两次。一个被 Try / except 子句包围,一个不是。只需从多余的调用中删除int() 调用,即行

    speed_limit=int(input("What is your speed zone? "))
    

    您似乎也分配了un_speed_limit,但从不使用它,您应该删除它并只使用speed_limit

    【讨论】:

      【解决方案3】:

      我不得不换行

      pass_car_speed=print("\nType '000' to kill program.\n\n")
      

      pass_car_speed=input("\nType '000' to kill program.\n\n")
      

      让程序运行。

      【讨论】:

        猜你喜欢
        • 2015-05-30
        • 1970-01-01
        • 2018-12-22
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        相关资源
        最近更新 更多