【问题标题】:How do i remove letters in a tuple without changing to a string如何在不更改为字符串的情况下删除元组中的字母
【发布时间】:2015-10-20 17:20:18
【问题描述】:

长话短说,我正在为随机和编写代码,并已开始使用运算符导入以使其更容易和更高效。但是,在打印结果时:

from operator import add, sub, mul
ops = (add, sub, mul)
op = random.choice(ops)
print("What is",ranNum1,op,ranNum2,"?")

我明白了:

什么是93?

我试图删除结果中的字母,但它是一个元组,而不是一个字符串,所以这是不可能的。有什么建议吗?

【问题讨论】:

  • 我假设你想要一个操作符号。 from operator import add, sub, mul 导入这些函数,所以当你把它们放在一个字符串中时,你会得到函数对象。你需要用字典滚动一些东西。
  • 我正在尝试从打印结果中删除“”
  • 如果不可能,有没有办法绕过它?我试图以更基本的方式提出问题,例如“什么是 10 + 2?”我尝试使用 if 语句,它使用 'op' () 的打印结果,但这不起作用:例如: if op == '' print( "什么是", ranNum1,"+", ranNum2,"?") elif op == '' print("什么是", ranNum1,"-", ranNum2,"?") else : print("什么是", ranNum1,"*", ranNum2,"?") userAnswer = int(input(""))
  • 阅读并理解摩根的评论。您正在打印一个函数对象。为了打印出一个符号(+-*),您需要创建一个字典来将函数映射到它们的关联符号。

标签: python string function python-3.x


【解决方案1】:

您可以使用__name__ 来获取名称,但这不是符号运算符:

>>> print("What is", ranNum1, op.__name__, ranNum2, "?")
What is 6 add 9 ?
>>> print("Answer:", op(ranNum1, ranNum2))
Answer: 15

添加字典允许您打印符号运算符,因此将ops 替换为字典:

>>> ops = {add: '+', mul: '*', sub: '-'}
>>> op = random.choice(list(ops))
>>> print("What is", ranNum1, ops[op], ranNum2, "?")
What is 6 + 9 ?

【讨论】:

  • 'sub' 不清楚,可能会让对编程一无所知的程序用户感到困惑,因此使用__name__ 不应该是一种方法。您还没有展示 OP 如何从 ops 字典中随机选择一个操作。
  • @dopstar OP 的 random.choice 仍然可以工作 op = random.choice(ops) 但为了清楚起见,我可以添加它。
  • op = random.choice(ops) 不起作用,您需要向random.choice 提供一个列表对象
【解决方案2】:
from operator import add, sub, mul
import random

ranNum1 = random.randint(0, 100)
ranNum2 = random.randint(0, 100)
ops = {'+': add, '-': sub, '*': mul}
op = random.choice(list(ops.keys()))
while True:
    user_input = int(input('What is {0} {1} {2}?'.format(ranNum1, op, ranNum2)))
    if user_input == ops.get(op)(ranNum1, ranNum2):
        break
    print('Incorrent!')
print('Correct!')

【讨论】:

  • OP 没有要求用户输入,只是一个随机生成的表达式
  • 你不必说list(opts.keys()),你可以说list(ops),你不必说ops.get(op)(...),你可以说ops[op](...)
猜你喜欢
  • 2019-11-20
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2011-09-13
  • 2022-12-04
相关资源
最近更新 更多