如何循环流程

2024-06-28 10:50:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python,并尝试创建一个简单的函数来执行以下逻辑:

  1. 取两个随机数,进行随机运算
  2. 用户将插入正确的结果
  3. 如果结果正确,该系统将采取另一个随机数和随机操作,等等

我做了以下操作,但我的问题是,它没有将结果输入到下一个操作中。你能检查一下我的代码并告诉我我做错了什么吗

import random

num = 1
while num < 100:
    x = random.randint(1,9)
    y = random.randint(1,9)
    opslist = ['+', '-', '*', '/']
    ops = random.choice(opslist)
    
    print(x,ops,y)

    if ops == '+':
        z = x + y
    elif ops == '-':
        z = x - y
    elif ops == '*':
        z = x * y
    elif ops == '/':
        z = x / y

    result = float(input("Please insert the result: "))
    if result == z: x = z
    print(z)
    num = num+1

Tags: 函数代码用户if系统random逻辑result
1条回答
网友
1楼 · 发布于 2024-06-28 10:50:04

正如tevemadar在评论中提到的那样,解决方案是将x移出循环,以便在循环之前只为其分配一个随机数。如果输入与结果匹配,x的下一个值将来自上一个结果。然后,您可以使用内联if来查看结果是否等于用户输入的值,然后将其用作x值,或者选择另一个随机数:

x = z if result == z else random.randint(1, 9)

另外,我建议将oplist初始化移到循环之外,以便只初始化它一次。另外,使用for循环将消除不必要的num变量


import random

opslist = ['+', '-', '*', '/']
x = random.randint(1, 9)

for i in range(100):   
    y = random.randint(1, 9)
    ops = random.choice(opslist)
    
    print(x, ops, y)

    if ops == '+':
        z = x + y
    elif ops == '-':
        z = x - y
    elif ops == '*':
        z = x * y
    elif ops == '/':
        z = x / y

    result = float(input("Please insert the result: "))
    print(z)

    x = z if result == z else random.randint(1, 9)
    
    

相关问题 更多 >