Py学习  »  Python

如何在python中将数字转换为符号(数学)

Devin Morlan • 5 年前 • 1584 次点击  

我试着做一个数学测验,用两个随机数(1,10)随机选择求和、差或积。我用过 z = random.randint(1, 3) 生成和、差或积,但我想使用这些数字转换成符号,如“x”、“/”或“+”以显示输出来提问,因为我是python语言的新手,我正在尝试学习如何将数字转换成符号。

我的代码在这里:

import random

def askNum():
  while(1):
    try:
      userInput = int(input("Enter a number: "))
      break
    except ValueError:
      print("Incorrect Input!")

  return userInput

def askQuestion():
  x = random.randint(1, 10)
  y = random.randint(1, 10)
  z = random.randint(1, 3)

  print(" 1 = product \n 2 = sum \n 3 = difference")
  print("What is " + str(x)+" " + str(z)+" " + str(y)+"?")

  u = askNum()
  if z == 1 and u==x*y:
    return 1  #product
  elif z == 2 and u==x+y:
    return 1 #sum
  elif z == 3 and u==x/y:
    return 1 #difference
  else:
    return 0
amount = 10
correct = 0
for i in range(amount):
  correct += askQuestion()

print("You got %d correct out of %d" % (correct, amount))

实际产出:

dm15125@isu:/u1/work/Python/math> python3 mathquiz.py
 1 = product
 2 = sum
 3 = difference
What is 4 2 6?
Enter a number: 10
 1 = product
 2 = sum
 3 = difference
What is 7 2 6?
Enter a number: 13
 1 = product
 2 = sum
 3 = difference
What is 3 2 3?
Enter a number: 6
 1 = product
 2 = sum
 3 = difference
What is 8 3 4?
Enter a number: 2
 1 = product
 2 = sum
 3 = difference
What is 8 3 10?
Enter a number: 0.8
Incorrect Input!
Enter a number: .8
Incorrect Input!
Enter a number: 0
 1 = product
 2 = sum
 3 = difference
What is 2 2 6?
Enter a number: 8
 1 = product
 2 = sum
 3 = difference
What is 6 3 4?
Enter a number: 1.5
Incorrect Input!
Enter a number: 2
 1 = product
 2 = sum
 3 = difference
What is 7 1 10?
Enter a number: 70
 1 = product
 2 = sum
 3 = difference
What is 9 2 5?
Enter a number: 14
 1 = product
 2 = sum
 3 = difference
What is 5 1 10?
Enter a number: 50
You got 8 correct out of 10

预期产量:

dm15125@isu:/u1/work/Python/math> python3 mathquiz.py
What is 4 + 6?
Enter a number: 10
What is 7 + 6?
Enter a number: 13
What is 3 + 3?
Enter a number: 6
What is 8 / 4?
Enter a number: 2
What is 8 / 10?
Enter a number: 0.8
Incorrect Input!
Enter a number: .8
Incorrect Input!
Enter a number: 0
What is 2 + 6?
Enter a number: 8
What is 6 / 4?
Enter a number: 1.5
Incorrect Input!
Enter a number: 2
What is 7 * 10?
Enter a number: 70
What is 9 + 5?
Enter a number: 14
What is 5 * 10?
Enter a number: 50
You got 8 correct out of 10
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43358
 
1584 次点击  
文章 [ 3 ]  |  最新文章 5 年前
PaDiaz
Reply   •   1 楼
PaDiaz    6 年前

您可以在askquestion函数中使用“if”语句来选择要打印的符号。

或者用这样的清单:

符号列表=[“*”、“+”、“-”]

符号列表[Z-1]

然后使用“z”值对其进行索引(请记住,第一个位置的索引是0而不是1)。

或者使用以“z”为键的字典来检索适当的符号:

符号{1:'*',2:'+',3:'-'}

符号

正如你所看到的,有很多选择,只要选择一个你更喜欢的。

Mudits
Reply   •   2 楼
Mudits    6 年前

您可以使用字典执行此操作:

operators = {
   1: "+",
   2: "-",
   3: "/",
   4: "*"
}
operators = operator[z] // where z is the random integer for gettig the operator.

在你的书面声明中

print("What is " + str(x)+" " + str(operator)+" " + str(y)+"?")
Amir
Reply   •   3 楼
Amir    6 年前

在这部分代码中:

print(" 1 = product \n 2 = sum \n 3 = difference")
print("What is " + str(x)+" " + str(z)+" " + str(y)+"?")

而不是 str(z) ,定义如下列表 ops = ['*', '+', '-'] 使用 ops[z - 1] . 这个 - 1 是因为你的 z 从1开始,但数组索引从零开始。 所以你的功能会变成:

def askQuestion():
    ops = ['*', '+', '-']
    x = random.randint(1, 10)
    y = random.randint(1, 10)
    z = random.randint(1, 3)

    print(" 1 = product \n 2 = sum \n 3 = difference")
    print("What is " + str(x) + " " + ops[z - 1] + " " + str(y) + "?")

    u = askNum()
    if z == 1 and u==x*y:
        return 1  #product
    elif z == 2 and u==x+y:
        return 1 #sum
    elif z == 3 and u==x/y:
        return 1 #difference
    else:
        return 0