python - 我的输入处理寻找“S”,但是当我输入“S”时,脚本就终止了
问题描述
我试图制作一个 UNO 分发系统,但它似乎不起作用:当我输入“S”时,它就终止了。(还没完结)
到目前为止,这是我的代码:
import random
n = 0
command = input("Rules[R], Start[S], End[E] or Quit[Q]")
if command.upper == "S":
while n < 7:
pick_type = random.randint[1, 9]
pick_colour = random.randint[1, 5]
if pick_type == 5 or 6 or 7:
pick_colour = random.randint[1, 4]
if pick_colour == 1:
colour = "Blue"
elif pick_colour == 2:
colour = "Green"
elif pick_colour == 3:
colour = "Red"
else:
colour = "Yellow"
print(colour)
elif pick_type == 1 or 2 or 3 or 4:
pick_number = random.randint[1, 10]
number = str(pick_number)
print(number)
else:
draw_condition = random.randint[1, 2]
if draw_condition == 1:
card_type = "Wild"
else:
card_type = "Wild Draw 4"
print(card_type)
n += 1
我得到的结果是:
Rules[R], Start[S], End[E], Quit[Q]
S
Process terminated with exit code 0.
解决方案
这是您的“选择”逻辑的简化版本:
from enum import Enum
import random
class PickType(Enum):
COLOUR = 0
NUMBER = 1
DRAW = 2
for pick in random.choices(list(PickType), weights=[3, 4, 2], k=7):
print({
PickType.COLOUR: random.choice(["Blue", "Green", "Red", "Yellow"]),
PickType.NUMBER: random.randint(1, 10),
PickType.DRAW: random.choice(["Wild", "Wild Draw 4"]),
}[pick])
注意使用random.choice
和random.choices
来简化随机选择。与其生成一个随机整数然后确定哪个字符串与哪个 int 一起使用,您可以使用choice
直接选择一个随机字符串。该choices
功能允许您对选择进行加权;在这种情况下,您希望获得 3:9 的颜色概率、4:9 的数字概率和 2:9 的平局概率,因此我们可以将权重传递[3, 4, 2]
给choices
对应于三个选项(COLOUR, NUMBER, DRAW
)。
告诉choices
我们想要 7 个选择 ( k=7
) 也消除了对递增n
计数器的需要——我们只要求 7 个“选择”,然后遍历结果pick_type
值。然后,我们使用 dict 将每个可能PickType
的转换为结果字符串,并打印该字符串。
推荐阅读
- java - 线程游戏循环导致 ArrayList 出现问题
- javascript - 我正在为一个类开发一个 Metric Converter 项目,但我不确定如何正确使用单选按钮?
- sql - 在 BigQuery SQL 中的范围内分隔
- css - 使用纯 CSS 创建 CSS 网格布局
- joomla - iFrame 限制为 150 像素高度
- excel - 如果单元格字体 = 红色,则使用 VBA 问题突出显示单元格
- type-conversion - 将 IGrafx 流程图文件转换为 Visio 文件
- javascript - html单选按钮
- python - 模拟 Python 游戏手柄输入以控制游戏
- swift - SwiftUI ForEach 用于预览和打印设备名称