社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Devin Morlan • 5 年前 • 1571 次点击  

我试着做一个数学测验,用两个随机数(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
 
1571 次点击  
文章 [ 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