找不到为什么我的代码没有退出循环和打印

问题描述 投票:0回答:3

我正在尝试用 python 编写代码来根据半径计算面积和周长。 每当我运行代码时,它只会返回“请输入计算半径”。就像它永远不会中断循环并从 while true 开始返回一样。

import math

radius = input()
    #Area
x = math.pi*radius**2
    #Circumference
y = 2*math.pi*radius**2

while True:
    print('Enter a radius for calculation: ')
    try:
        radius = int(radius)
    except:
        print('Please use numeric digit.')
        continue
    if radius < 1:
        print('Please enter a positive number.')
        continue
    break
print ('The area is', x)
print ('The circumference is', y)

我期待面积和周长的输出。据我所知,break 应该结束循环并立即运行打印语句。但是,它立即又回到了我只是无言以对的状态。

python while-loop
3个回答
0
投票

您在代码顶部接受用户输入

radius = input()
,该代码只会运行一次。 因此
radius
在循环中保持不变,如果输入无效值,它将继续显示
print('Enter a radius for calculation: ')

尝试在 try-catch 块内获取用户输入:

import math

while True:
    print('Enter a radius for calculation: ')
    try:
        radius = float(input())  # Get user input and convert to a float
        if radius < 1:  # Check for positive radius
            print('Please enter a positive number.')
            continue
    except ValueError:  # Catch invalid numeric input
        print('Please use numeric digits.')
        continue

    # If input is valid, calculate area and circumference
    area = math.pi * radius**2
    circumference = 2 * math.pi * radius

    # Print results
    print(f'The area is {area:.2f}')
    print(f'The circumference is {circumference:.2f}')
    break

0
投票

如果您的计算是指周长,则公式不正确。它应该是 2 * math.pi * radius 而不是 2 * math.pi * radius**2。另外,请确保检查变量范围;验证半径后,应在循环内计算变量 x 和 y。


0
投票

一旦用户输入正确的输入,就在 while 循环中获取输入。退出 while 循环。 一旦获得正确的输入,就可以计算出你想要的任何结果。

import math

while True:
    print('Enter a radius for calculation: ')
    radius_input = input()  # Get input as a string
    
    try:
        radius = float(radius_input)  # Convert to float (works for both integers and decimals)
    except ValueError:  # Catch errors if input is not numeric
        print('Please use numeric digits.')
        continue
    
    if radius < 1:  # Check if radius is positive
        print('Please enter a positive number.')
        continue
    
    # If we reach this point, we have a valid radius
    break

# Calculate area and circumference after the loop
x = math.pi * radius**2  # Area
y = 2 * math.pi * radius  # Circumference

print('The area is', x)
print('The circumference is', y)
© www.soinside.com 2019 - 2024. All rights reserved.