首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python while true条件引发语法错误

Python while true条件引发语法错误
EN

Stack Overflow用户
提问于 2018-10-25 03:08:09
回答 2查看 2.1K关注 0票数 0

你能告诉我下面的代码有什么问题吗?

代码语言:javascript
复制
def add(x, y):
   return x + y
while True:
    try:
        num1 = float(input('Enter first number: ')
    except:
        print ('num1 is a complex/string. Only Integers or Float is allowed. Please key in again')
    try:
        num2 = float(input("Enter first number: ")
    except:
        print ('num2 is a complex/string. Only Integers or Float is allowed. Please key in again')
    break
print(num1,"+",num2,"=", add(num1,num2))
input("Press enter to exit ;)")
EN

回答 2

Stack Overflow用户

发布于 2018-10-25 03:15:13

(除了语法错误-缺少括号...)

break语句转义了while循环,因此通过将其放在迭代的末尾,您将在第一次迭代时中断,因此如果enter无效输入,则不会再次询问它们,因为您已经中断了。

此外,就只有一个循环而言,逻辑是错误的。如果他们输入了一个有效的num1,然后又输入了一个无效的num2,他们将被要求(如果您移动break)再次输入num1num2,而不是只输入num2

要解决这些问题,您可以划分代码-将输入逻辑移动到一个函数:

代码语言:javascript
复制
def get_float(prompt):
    while True:
        try:
            return float(input(prompt))
            break
        except ValueError:
            print('sorry, invalid input')

这样你的主代码就更容易理解了:

代码语言:javascript
复制
def add(x, y):
   return x + y

num1 = get_float('Enter first number: ')
num2 = get_float('Enter second number: ')
result = add(num1, num2)
print(num1, '+', num2, '=', result)
input('press enter to exit')

一次试运行显示了它的好处:

代码语言:javascript
复制
Enter first number: one
sorry, invalid input
Enter first number: bob
sorry, invalid input
Enter first number: 20
Enter second number: nine
sorry, invalid input
Enter second number: 8.89
20.0 + 8.89 = 28.89
press enter to exit
票数 1
EN

Stack Overflow用户

发布于 2018-10-25 03:11:29

您需要使用raw_input来仅接受enter提示。

代码语言:javascript
复制
def add(x, y):
   return x + y
while True:
    try:
        num1 = float(raw_input('Enter first number: '))
    except:
        print ('num1 is a complex/string. Only Integers or Float is allowed. Please key in again')
    try:
        num2 = float(raw_input("Enter second number: "))
    except:
        print ('num2 is a complex/string. Only Integers or Float is allowed. Please key in again')
    break
print(num1,"+",num2,"=", add(num1,num2))

raw_input("Press enter to exit ;)")
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52976298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档