# Math Quizzes
import random
import math
import operator
def questions():
# Gets the name of the user
name= ("Alz")## input("What is your name")
for i in range(10):
#Generates the questions
number1 = random.randint(0,100)
number2 = random.randint(1,10)
#Creates a Dictionary containg the Opernads
Operands ={'+':operator.add,
'-':operator.sub,
'*':operator.mul,
'/':operator.truediv}
#Creast a list containing a dictionary with the Operands
Ops= random.choice(list(Operands.keys()))
# Makes the Answer variable avialabe to the whole program
global answer
# Gets the answer
answer= Operands.get(Ops)(number1,number2)
# Makes the Sum variable avialbe to the whole program
global Sum
# Ask the user the question
Sum = ('What is {} {} {} {}?'.format(number1,Ops,number2,name))
print (Sum)
global UserAnswer
UserAnswer= input()
if UserAnswer == input():
UserAnswer= float(input())
elif UserAnswer != float() :
print("Please enter a correct input")
def score(Sum,answer):
score = 0
for i in range(10):
correct= answer
if UserAnswer == correct:
score +=1
print("You got it right")
else:
return("You got it wrong")
print ("You got",score,"out of 10")
questions()
score(Sum,answer)
当我在控制台中输入一个浮点数时,控制台会输出:
What is 95 * 10 Alz?
950
Please enter a correct input
我只是好奇如何让控制台不打印出信息和正确的号码。
答案 0 :(得分:1)
这是一种确保从用户那里获得可以解释为浮点数的方法:
while True:
try:
user_input = float(input('number? '))
break
except ValueError:
print('that was not a float; try again...')
print(user_input)
这个想法是尝试将用户输入的字符串转换为浮点数,只要失败就再次询问。如果它从(无限)循环中检出break
。
答案 1 :(得分:0)
您可以构造条件if语句,使其导致数字类型不仅仅是float
if UserAnswer == input():
UserAnswer= float(input())
elif UserAnswer != float() :
print("Please enter a correct input")
答案 2 :(得分:0)
跟踪您的代码,了解它为什么不起作用:
UserAnswer= input()
此行不向用户提供提示。然后它将从标准输入读取字符,直到它到达行尾。读取的字符将分配给变量UserAnswer
(类型为str
)。
if UserAnswer == input():
在阅读输入之前再次向用户提供提示。将新输入与UserAnswer
中的值进行比较(刚刚在上一行输入)。如果此新输入等于先前的输入,则执行下一个块。
UserAnswer= float(input())
连续第三次读取输入而不显示提示。尝试将第三个输入解析为浮点数。如果无法解析此新输入,则会引发异常。如果已解析,则会将其分配给UserAnswer
。
elif UserAnswer != float() :
仅当第二个输入不等于第一个输入时,才会计算此表达式。如果这令人困惑,那就是因为代码同样令人困惑(可能不是你想要的)。将第一个输入(字符串)与新创建的float对象进行比较,并使用float()
函数返回的默认值。
由于字符串永远不等于float,因此not-equals测试将始终为true。
print("Please enter a correct input")
因此会打印此消息。
将整个代码段更改为类似的内容(但这只是一个代表性示例,实际上您可能需要一些不同的行为):
while True:
try:
raw_UserAnswer = input("Please enter an answer:")
UserAnswer = float(raw_UserAnswer)
break
except ValueError:
print("Please enter a correct input")