Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在输入中查找文本_Python_String_Input_Integer - Fatal编程技术网

Python 如何在输入中查找文本

Python 如何在输入中查找文本,python,string,input,integer,Python,String,Input,Integer,我对这个非常简单的计算器脚本有问题。如果用户输入字母或单词(如:s,the),系统将崩溃。我的想法是将其打印出来: print ("WARNING: That is not a valid equation!") 当这种情况发生时。但是,我不能仅仅让它看y是否是整数,否则,*、+、-、和/将不起作用。另外,我需要一种方法让它跳过 exec(x) print(x) 这样它就不会给我一个错误并使脚本崩溃。提前谢谢你 代码(Python v3.3.0-Mac OSX 10.8): 编辑:看了ras

我对这个非常简单的计算器脚本有问题。如果用户输入字母或单词(如:s,the),系统将崩溃。我的想法是将其打印出来:

print ("WARNING: That is not a valid equation!")
当这种情况发生时。但是,我不能仅仅让它看y是否是整数,否则,*、+、-、和/将不起作用。另外,我需要一种方法让它跳过

exec(x)
print(x)
这样它就不会给我一个错误并使脚本崩溃。提前谢谢你

代码(Python v3.3.0-Mac OSX 10.8):

编辑:看了raser的答案后。这就是我把它改成的。这是我以前的代码和他的两个答案的混合

                valid_chars = "0123456789-+/* \n";
                while True:
                    x = "x="
                    y = input(" >> ")
                    x += y
                    if False in [c in valid_chars for c in y]:
                        print("Errors!");
                        continue;
                    if(y == "end" or y == "End" or y == "exit" or y == "Exit" or y == "cancel" or y == "Cancel"):
                         break
                    exec(x)
                    print(x)

如果要检查输入是否为整数,则可以执行以下等式:7+9/3*2-3

import re

while True:
    x = "x="
    y = input(" >> ")
    if re.match("^[0-9]{0,}$", y):
        x += y
        exec(x)
        print(x)
    else:
        raise TypeError("WARNING: That is not a valid equation!")

如果您想进一步了解正则表达式的工作原理,请看这里-->

这里有一个非常简单的解决方案。可以用更少的代码完成,但它可以工作(每次运行脚本时一次):


您可以捕获异常:

#!/usr/bin/env python
while True:
    equation = raw_input(">> ");
    try:
        exec(equation);
    except SyntaxError:
        print("WARNING! That is not a valid function");
或者,如果您想检测0-9*/-=中没有的任何内容,您可以使用正则表达式(这可能是过度使用)或执行以下操作:

#!/usr/bin/env python
valid_chars = "0123456789-+/* \n";
while True:
    equation = raw_input(">> ").strip();
    if False in [c in valid_chars for c in equation]:
        print("Errors!");
        continue;
    exec(equation);

您是否考虑过使用正则表达式进行输入验证?你可以用它来测试你的表达式。你能给出一些有效的方程式的例子吗?例如,这是一个简单的运算计算器,还是它在计算更复杂的数学方程?它能够计算方程,例如:7+9/3*2-3当我键入:*、/、+或-,这是否会给出“警告”?
#!/usr/bin/env python
while True:
    equation = raw_input(">> ");
    try:
        exec(equation);
    except SyntaxError:
        print("WARNING! That is not a valid function");
#!/usr/bin/env python
valid_chars = "0123456789-+/* \n";
while True:
    equation = raw_input(">> ").strip();
    if False in [c in valid_chars for c in equation]:
        print("Errors!");
        continue;
    exec(equation);