2015-03-03 69 views
-3
import random 
import time 
main_Loop = 0 
question_Nummber = 0 
user_Score = 0 
print("   -Welcome To The Maths Quiz-    ") 
time.sleep (2) 
print("This quiz shall ask you 10 randomly generated questions") 
time.sleep (2) 
user_Name =input("But first you must input your name") 
print("Thank you",user_Name ,"for your co-operation") 
operators = ["+","-","*"] 
random_Operator = (random.choice(operators)) 
random_Number1 = (random.randint(0,15)) 
random_Number2 = (random.randint(0,15)) 
while main_Loop < 1: 
    question = input(question_Nummber + 1 + "What is" + random_Number1 + 
       random_Operator + random_Number2,"?") 

這是問題它看到的所有上述的6個參數,我想改變這種狀況,因此輸出正確的問題...我怎樣才能讓這些操作符像隨機生成的整數一樣運算?

+1

你能不能給你期望它的輸出是什麼,輸出什麼的例子? – syntonym 2015-03-03 09:40:01

+0

提示:您可以說'operators =「+ - *」'具有相同的效果。 – mkrieger1 2015-03-03 09:59:30

+0

我希望它輸出一個隨機問題。 – 2015-03-03 10:00:48

回答

1

,你必須是你不能使用+的問題添加字符串和整數。例如,

>>> 1 + 'one' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

要獲得字符串連接到工作的兩個參數必須是字符串,所以你需要將整數轉換爲字符串:

>>> str(1) + 'one' 
'1one' 

使用這個你可以重寫你的input()聲明這樣:

question = input(str(question_Nummber + 1) + "What is" + str(random_Number1) + 
       random_Operator + str(random_Number2) + "?") 

可能導致這樣的提示,這顯示:

>>> question 
'1What is10+22?' 

顯然你需要改進格式,但使用+來進行字符串連接並不是最好的方法。相反,使用str.format()

question = input('{}: What is {} {} {}? '.format(question_Nummber, 
       random_Number1, random_Operator, random_Number2)) 

接着,定義操作符作爲與操作員字符作爲鍵的字典和對應的功能值:

import operator 
operators = {'+': operator.add, 
      '-': operator.sub, 
      '*': operator.mul,} 

使用上述字典可以隨機選擇的一個其鍵作爲一個經營者:

op = random.choice(operators.keys()) 

然後,當您要執行的操作,你可以這樣做:

result = operators[op](random_Number1, random_Number2) 

while循環可以被改寫爲一個循環,你的input()語句可以使用str.format()如上圖所示:

import random 
import operator 
operators = {'+': operator.add, 
      '-': operator.sub, 
      '*': operator.mul,} 

score = 0 
for question in range(1, 11): 
    op = random.choice(operators.keys()) 
    random_Number1 = random.randint(0, 15) 
    random_Number2 = random.randint(0, 15) 
    user_answer = input('{}: What is {} {} {}? '.format(question, random_Number1, op, random_Number2)) 
    if user_answer == operators[op](random_Number1, random_Number2): 
     print 'Correct!' 
     score += 1 
    else: 
     print 'Incorrect.' 

print 'You got {} correct answers'.format(score) 
相關問題