我正在制作一个教育数学游戏,并希望确保所有的用户输入都是有效的,即一个数字。当他们输入一个字母或符号时,需要显示一条消息,上面写着“无效,请再试一次”。有人能帮我吗?这是我的密码:
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发布于 2017-10-12 02:18:24
您要寻找的是string类上的isdigit方法。
即https://docs.python.org/3/library/stdtypes.html#str.isdigit
如果用户没有输入有效数字,您可以再次请求一个有效数字:
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变量,并且保证它将是一个数字。我在下面为你把所有的东西放在一起。实际上,我的代码中有一些错误(对不起!)我修好了。您的工作代码如下所示:
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如果你有任何问题,请回答!
发布于 2017-10-12 03:50:01
isdigit()检查字符串是否由数字组成。你可以在Python文档里找到它。
示例:
string1 = '1234'
string.isdigit()这将返回为True。
string2 = 'abcd'
string.isdigit()这将返回为False。
https://stackoverflow.com/questions/46699860
复制相似问题