通过检查和处理来处理输入数据质量默认值

时间:2018-03-14 12:56:08

标签: python python-3.x

我正在尝试编写一个用于在Python中平方用户输入数的代码。我创建了函数my1()...

我想要做的是让Python接受用户输入的数字并对其进行平方,但如果用户没有添加任何值,则会给出一个print语句,默认情况下会给出例如2的默认数字的平方

这是我到目前为止所尝试的内容

def my1(a=4):
 if my1() is None:
    print('You have not entered anything')
 else:
    b=a**2
    print (b)

my1(input("Enter a Number"))

4 个答案:

答案 0 :(得分:2)

这是一个更好的解决方案:

def my1(a=4):
    if not a:
        return 'You have not entered anything'
    else:
        try:
            return int(a)**2
        except ValueError:
            return 'Invalid input provided'

my1(input("Enter a Number"))

<强>解释

  • 拥有您的函数return值,而不仅仅是打印。这是一种很好的做法。
  • 使用if not a测试您的字符串是否为空。这是一个Pythonic成语。
  • 将输入字符串转换为数字数据,例如通过int
  • Catch ValueError并在用户输入无效的情况下返回相应的消息。

答案 1 :(得分:0)

在你的第二行,它应该是     如果a是None:

我认为您想要做的事情如下:

def m1(user_input=None):
    if user_input is None or isinstance(user_input, int):
        print("Input error!")
        return 4
    else:
        return int(user_input)**2
print(my1(input("Input a number")))

答案 2 :(得分:0)

您通过在my1()中调用my1()来获得无限循环。我会做以下编辑:

def my1(a):
    if a is '':
        print('You have not entered anything')
    else:
        b=int(a)**2
        print (b)

my1(input("Enter a Number"))

答案 3 :(得分:0)

当我阅读你的代码时,我可以看到你对你所写的内容感到非常困惑。尝试围绕您需要执行的任务进行整理。在这里,你想要:

  1. 接收您的用户输入。
  2. 计算数据。
  3. 相应打印。
  4. 首先,请接受您的意见。

    user_choice = input("Enter a number :")
    

    然后,计算您收到的数据。

    my1(user_choice)
    

    您希望自己的功能(截至目前为print an error message if your type data is not good,否则打印平方数。

    def my1(user_choice): # Always give meaning to the name of your variables.
        if not user_choice:
            print 'Error'
        else:
            print user_choice ** 2
    

    在这里,您基本上是在说“如果我的user_choice不存在......”。意思是它等于False(它比这更复杂,但总之,你需要记住这一点)。例如,空字符串不包含任何内容。另一个选择是else,如果您处理了错误案例,那么您的输入必须正确,因此您需要相应地计算数据。