首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查用户输入是否为数字

如何检查用户输入是否为数字
EN

Stack Overflow用户
提问于 2017-10-12 01:12:21
回答 2查看 2.3K关注 0票数 0

我正在制作一个教育数学游戏,并希望确保所有的用户输入都是有效的,即一个数字。当他们输入一个字母或符号时,需要显示一条消息,上面写着“无效,请再试一次”。有人能帮我吗?这是我的密码:

代码语言:javascript
复制
import random

counter=0
score = 0
incorrect = 0

name=input("What is your name?")
print("Hi",name,",welcome to your math quiz!")

questions = ["10*2","4-2","6+12","6*4","12-5","6+54","1*0","3-6","4+0","65-9"]
answers=["20","2","18","24",'7','60','0','-3','4','56']

idx_questions = list(enumerate(questions))
idx_answers = list(enumerate(answers))

random.shuffle(idx_questions)

counter=0
inputs = []
for idxq, question in idx_questions:
    print("Question",counter+1,":",question)
    ans = input("What is the answer? ")
    counter=counter+1

    inputs.append(ans)
    for idxa, answer in idx_answers:
        if idxq == idxa and ans == answer:
            print("Correct")
            score=score+1
            print("Correct Answers=",score)
            print("Incorrect Answers=",incorrect)

        elif idxq == idxa and ans != answer:
            print("Incorrect. The answer is", answer)
            incorrect=incorrect+1
            print("Correct Answers=",score)
            print("Incorrect Answers=",incorrect)

print("End of quiz")
print(name,"your score is",score,"out of 10")
print(score*10,"/100",score,",%")
counter=0
while counter<10:
    print("Question",counter+1,": Your answer =", inputs[counter])
    counter=counter+1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-12 02:18:24

您要寻找的是string类上的isdigit方法。

https://docs.python.org/3/library/stdtypes.html#str.isdigit

如果用户没有输入有效数字,您可以再次请求一个有效数字:

代码语言:javascript
复制
def get_answer():
    num_str = input("Please enter a number: ").lower()
    if (num_str.isdigit()):
        return num_str
    else:
        print("Invalid, please try again")
        return get_answer()

嗨,简,这个函数基本上会一直要求输入,直到用户输入一个数字为止。您所需要做的就是获得函数的ans变量,并且保证它将是一个数字。我在下面为你把所有的东西放在一起。实际上,我的代码中有一些错误(对不起!)我修好了。您的工作代码如下所示:

代码语言:javascript
复制
import random

counter=0
score = 0
incorrect = 0

name=input("What is your name?")
print("Hi",name,",welcome to your math quiz!")

questions = ["10*2","4-2","6+12","6*4","12-5","6+54","1*0","3-6","4+0","65-9"]
answers=["20","2","18","24",'7','60','0','-3','4','56']

idx_questions = list(enumerate(questions))
idx_answers = list(enumerate(answers))

random.shuffle(idx_questions)

def get_answer():
    num_str = input("Please enter a number: ").lower()
    if (num_str.isdigit()):
        return num_str
    else:
        print("Invalid, please try again")
        return get_answer()

counter=0
inputs = []
for idxq, question in idx_questions:
    print("Question",counter+1,":",question)
    ans = get_answer()
    counter=counter+1

    inputs.append(ans)
    for idxa, answer in idx_answers:
        if idxq == idxa and ans == answer:
            print("Correct")
            score=score+1
            print("Correct Answers=",score)
            print("Incorrect Answers=",incorrect)

        elif idxq == idxa and ans != answer:
            print("Incorrect. The answer is", answer)
            incorrect=incorrect+1
            print("Correct Answers=",score)
            print("Incorrect Answers=",incorrect)

print("End of quiz")
print(name,"your score is",score,"out of 10")
print(score*10,"/100",score,",%")
counter=0
while counter<10:
    print("Question",counter+1,": Your answer =", inputs[counter])
    counter=counter+1

如果你有任何问题,请回答!

票数 1
EN

Stack Overflow用户

发布于 2017-10-12 03:50:01

isdigit()检查字符串是否由数字组成。你可以在Python文档里找到它。

示例:

代码语言:javascript
复制
string1 = '1234'
string.isdigit()

这将返回为True。

代码语言:javascript
复制
string2 = 'abcd'
string.isdigit()

这将返回为False。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46699860

复制
相关文章

相似问题

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