【问题标题】:Wondering how to effectively code coin flipper想知道如何有效地编码投币器
【发布时间】:2021-05-24 11:00:22
【问题描述】:

好吧,我正在尝试编写硬币翻转器,我想知道是否有办法打印输出是正面还是反面,1 是正面,2 是反面,我只是不知道该怎么做:

import random

min = 1
max = 2
print("Flipping the coin")
print(random.randint(1, 2))

【问题讨论】:

  • 抱歉,代码的格式很奇怪,我不知道如何修复它
  • 请参考link

标签: python


【解决方案1】:

惯用的方法是使用random.choice()。 这可以用于 1.dict 或类似 2.tuple 的序列(list 也可以使用),具体取决于数字到文本的关系对您的重要性(例如 1 ->头)。

  1. dict():
import random

coin_outcome = {1: 'Head', 2: 'Tail'}
print("Flipping the coin")

coin_values = list(coin_outcomes.keys())
outcome = random.choice(coin_values)
print(coin_outcome[outcome])
  1. tuple():
import random

coin_outcome = 'Head', 'Tail'
print("Flipping the coin")
outcome = random.choice(coin_outcome)
print(outcome)

您可以通过多种不同的方式对其进行重新设计,从而避免random.choice(),但这意味着对许多假设进行硬编码。

例如,如果您要使用random.randint() 来获取coin_outcome 字典的键(如1.),您应该确保random.randint() 的结果有效的密钥,如果不添加额外的逻辑来处理此问题,您将无法使用 1020

【讨论】:

  • 方法2是最简单的方法。
  • 它们是两种不同的抽象。这取决于更有价值的东西。方法 2 抽象出我们并不真正关心的数字信息。方法 1 明确了键/值关系,这在更丰富的上下文中可能很有用。
  • 同意,但是对于抛硬币来说,选择一个整数然后将其转换为字符串是没有任何意义的,如果您只想显示它。
【解决方案2】:

使用条件语句if else as:

import random
mini = 1
maxi = 2
print("Flipping the coin")
randOut = random.randint(mini, maxi)
if randOut == 1:
    print("Heads")
else:
    print("Tails")

【讨论】:

  • 另外,请注意避免使用 minmax 等关键字作为对象名称。
【解决方案3】:

你很接近。但是,您还没有设置条件来执行print("Head")print("Tail")。这是我的解决方案:

from random import randint

def flip_coin():
    coin_result = randint(1, 2)

    if coin_result == 1:
        return "Head"
    elif coin_result == 2:
        return "Tail"

result = flip_coin()
print(result)

【讨论】:

    【解决方案4】:

    您需要使用条件来检查输出。这是导入random后的单行代码:

    print("Flipping the coin\n"+("Heads" if random.choice([0, 1]) else "Tails"))
    

    这是ternary 表达式。

    或者只是在正面和反面之间随机选择:

    print("Flipping the coin\n"+random.choice(["Tails", "Heads"]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      相关资源
      最近更新 更多