如何循环Python代码,每次更改细节?

如何循环Python代码,每次更改细节?,python,loops,Python,Loops,这段代码执行它应该执行的操作,但我不知道如何正确地循环它。代码本身工作得很好,但太长了,所以我需要把它放在一个循环中。我的代码如下所示: random1 = random.randint(0, 100) random2 = random.randint(0, 100) solution1 = random1 + random2 print ("What is ", random1, " + ", random2, "?") user_answer1 = i

这段代码执行它应该执行的操作,但我不知道如何正确地循环它。代码本身工作得很好,但太长了,所以我需要把它放在一个循环中。我的代码如下所示:

    random1 = random.randint(0, 100)
    random2 = random.randint(0, 100)
    solution1 = random1 + random2
    print ("What is ", random1, " + ", random2, "?")
    user_answer1 = input()
    if solution1 == int(user_answer1):
         print ("Answer is correct!")
         score += 1
    else:
         print ("Answer is wrong!")

    print ("Your score is ", score, "! Let's continue.")
这只是代码的1/10,重复了9次


好的,我知道一点如何使用循环。这段代码中的问题是,我需要程序有3个加法、4个减法和3个乘法问题。有办法吗?

只需将代码放入一个方法中,并在其上循环10次:

import random

def ask_questions():
    random1 = random.randint(0, 100)
    ...

for i in range(10):
    ask_questions()

使其成为一个函数,在该函数中,您可以指定是否要进行加法、减法或乘法:

def question(op):
    random1 = (random.randint(0, 100))
    random2 = (random.randint(0, 100))
    if op == '+':
        solution1 = random1+random2
    elif op == '-':
        solution1 = random1-random2
    else:
        solution1 = random1*random2
    print ("What is ",random1, op,random2, "? ")
    user_answer1 = (input())
    if solution1 == int(user_answer1):
        print ("Answer is correct!")
        return 1
    else:
        print ("Answer is wrong!")
        return 0

score = 0
for i in range(3):
    score += question('+')
for i in range(4):
    score += question('-')
for i in range(3):
    score += question('*')

print ("Your score is",score,"!")
只是为了好玩、使用和其他Python细节:

from random import randint
from itertools import chain, repeat

def question(op, a=0, b=100):
  operation = "{} {} {}".format(randint(a, b), op, randint(a, b))
  correct = eval(operation) == int(input("\nWhat is {}?\n> ".format(operation)))
  print("Your answer is {}!".format("correct" if correct else "wrong"))
  if not correct: print("It's {}.".format(eval(operation)))
  return correct

score = sum(map(question, chain.from_iterable(map(repeat, '+-*', [3, 4, 3]))))

print("\nYour total score is {}!".format(score))

你能编辑这部分代码吗,因为更改代码需要几个小时。我会尝试这样做,我会更进一步,并使用:for op in'+''*3+'-'*4+'*'*3:score+=questionop你有很多多余的妄想。我将删除它们以提高可读性。如果您使用的是Python3,我会将它们保留在print参数周围,但是在2.X中,即使在那里也不需要它们。