当前位置: 首页 > 面试题库 >

如何用.isdigit键入负数?

赵锐
2023-03-14
问题内容

当我尝试这个

if question.isdigit() is True:

我可以很好地键入数字,这会过滤掉字母/字母数字字符串

例如,当我尝试使用“ s1”和“ s”时,它将转到(其他)。

问题是,当我输入负数(例如-1)时,“。isdigit”会将“-”符号计数为字符串值,并且拒绝它。我如何才能使’.isdigit’允许使用负号’-‘?

这是代码。我尝试过的东西。

while a <=10 + Z:
    question = input("What is " + str(n1) + str(op) + str(n2) + "?")
    a = a+1

    if question.lstrip("-").isdigit() is True:
        ans = ops[op](n1, n2)
        n1 = random.randint(1,9)
        n2 = random.randint(1,9)
        op = random.choice(list(ops))

        if int(question) is ans:
            count = count + 1
            Z = Z + 0
            print ("Well done")
        else:
            count = count + 0
            Z = Z + 0
            print ("WRONG")
    else:
        count = count + 0
        Z = Z + 1
        print ("Please type in the number")

问题答案:

使用try / except,如果我们不能转换为int,它将设置is_digFalse

try:
    int(question)
    is_dig = True
except ValueError:
    is_dig = False
if is_dig:
  ......

或做一个功能:

def is_digit(n):
    try:
        int(n)
        return True
    except ValueError:
        return  False

if is_digit(question):
   ....

首先查看您对int的编辑转换,检查输入是否为数字,然后转换无意义,请一步一步完成:

while a < 10: 
     try:
        question = int(input("What is {} {} {} ?".format(n1,op,n2)))
     except ValueError:
        print("Invalid input")
        continue # if we are here we ask user for input again

    ans = ops[op](n1, n2)
    n1 = random.randint(1,9)
    n2 = random.randint(1,9)
    op = random.choice(list(ops))

    if question ==  ans:
        print ("Well done")
    else:
        print("Wrong answer")
    a += 1

不知道Z的在做,但一切 Z = Z + 0是一样的没有做任何事情来Z在所有1 + 0 == 1

使用函数获取输入,我们可以使用范围:

def is_digit(n1,op,n2):
    while True:
        try:
            n = int(input("What is {} {} {} ?".format(n1,op,n2)))
            return n
        except ValueError:
            print("Invalid input")


for _ in range(a):
    question = is_digit(n1,op,n2) # will only return a value when we get legal input
    ans = ops[op](n1, n2)
    n1 = random.randint(1,9)
    n2 = random.randint(1,9)
    op = random.choice(list(ops))

    if question ==  ans:
        print ("Well done")
    else:
        print("Wrong answer")


 类似资料:
  • isdigit(测试字符是否为阿拉伯数字) 相关函数 isxdigit 表头文件 #include<ctype.h> 定义函数 int isdigit(int c) 函数说明 检查参数c是否为阿拉伯数字0到9。 返回值 若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。 附加说明 此为宏定义,非真正函数。 范例: /* 找出str字符串中为阿拉伯数字的字符*/ #include<cty

  • 描述 (Description) 方法isdigit()检查字符串是否仅由数字组成。 语法 (Syntax) 以下是isdigit()方法的语法 - str.isdigit() 参数 (Parameters) NA 返回值 (Return Value) 如果字符串中的所有字符都是数字且至少有一个字符,则此方法返回true,否则返回false。 例子 (Example) 以下示例显示了isdigi

  • 描述 (Description) 该方法确定指定的char值是否为数字。 语法 (Syntax) boolean isDigit(char ch) 参数 (Parameters) 这是参数的细节 - ch - 原始字符类型。 返回值 (Return Value) 如果传递的字符实际上是一个数字,则此方法返回true。 例子 (Example) public class Test { pub

  • isdigit 测试字符是否为阿拉伯数字 相关函数 isxdigit 表头文件 #include<ctype.h> 定义函数 int isdigit(int c) 函数说明 检查参数c是否为阿拉伯数字0到9。 返回值 若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。 附加说明 此为宏定义,非真正函数。 范例 /* 找出str字符串中为阿拉伯数字的字符*/ #include<cty

  • 问题内容: 使用表的负主键是否有任何影响(SQL Server 2005中的Identity Increment -1,Identity Seed -1)? 原因是我们正在创建一个新数据库来替换现有数据库。这两个数据库之间有相似的表,我们希望信息的“源”对于我们的应用程序是透明的。方法是创建从两个数据库合并表的视图。否定PK可确保身份不重叠。 问题答案: 就像其他人所说的那样,数据库很好。 但这对

  • 问题内容: 这仅在用户输入时有效,但是即使他们输入,我希望它也能正常工作,但在用户输入时无效。 因此,用户应该能够输入和,但不能输入。 我该怎么办? 问题答案: 使用正则表达式。