【问题标题】:How can I set random to change at each loop in python如何在python的每个循环中设置随机更改
【发布时间】:2022-01-17 03:04:32
【问题描述】:

我想创建一个循环,为每个循环生成不同的方程。但是当我尝试创建代码时,它只创建了几次相同的方程式。

import random
count=range(random.randint(1,10))
terms_range=range(1,11)
num_terms=random.radint(1,10)

#This is where the calculation will be written
calculation=''
result_from_user=''
signs=''

def sign_generator(x):
  #This function will randomly generate the sign
  sign=random.randint(1,4)
  if sign == 1:
     x = '+'
     return x
  elif sign == 2:
     x = '-'
     return x
  elif sign == 3:
     x= '*'
     return x
  else:
     x='/'
     return x

    

for x in count:
  while num_terms>0:
     terms=random.randint(1,9)
     terms=str(terms)
     signs=sign_generator(signs)
     if num_terms !=1:
         calculation=calculation+terms+signs
     else:
         calculation=calculation+terms
     num_terms-=1
        
  print(calculation)
  result_from_user=input('= ')

我应该如何修复我的代码?

【问题讨论】:

  • 这段代码有错别字。您是否尝试过实际运行它?
  • 代码对我有用,生成新的随机方程。 (同时在第 4 行修复该类型)
  • 我已多次运行此代码,但每个循环的方程相同。并感谢您指出错字

标签: python random


【解决方案1】:

您一遍又一遍地得到相同的结果,因为您只构建了一个calculation,然后耗尽了num_terms。要解决此问题,您需要在每个循环中重置 calculationnum_terms

for x in count:
    calculation = ""
    num_terms = random.randint(1, 10)
    while num_terms > 0:
        terms = random.randint(1, 9)
        terms = str(terms)
        signs = sign_generator(signs)
        if num_terms != 1:
            calculation = calculation+terms+signs
        else:
            calculation = calculation+terms
        num_terms -= 1

    print(calculation)

打印:

7+5-3/5-3
7+4*4
9/4/2
3-8/7-1*4*5-3*5/1
8*9-8
1/1*3+5+3/7
6-9+7-2*7-6
4/7*3-3*9/7*6-3
8*7/8*1+7/2*9/9/6

更进一步,整个代码可以通过使用random.choice 生成sign 并迭代range 来构建术语而不是使用while 循环来大大简化。这使您可以跟踪更少的变量,并使整个事情只有七行代码:

import random


for _ in range(random.randint(1, 10)):
    calculation = ""
    for _ in range(random.randint(0, 9)):
        calculation += str(random.randint(1, 9))
        calculation += random.choice("+-*/")
    calculation += str(random.randint(1, 9))

    print(calculation)

【讨论】:

  • 非常感谢您的详细回答:D
【解决方案2】:

当我尝试时它似乎可以工作,只是修复了第 5 行的拼写错误:

num_terms=random.radint(1,10) 

num_terms=random.randint(1,10)

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多