python - 试图简化将字符分配给数字
问题描述
我正在尝试以尽可能少的行数将字符分配给值
这就是我所知道的。我查看了其他解决方案,但似乎无法让它们工作
letter = random.randint(1,26)
if letter == 1:
actualLetter = "A"
elif letter == 2:
actualLetter = "B"
elif letter == 3:
actualLetter = "C"
elif letter == 4:
actualLetter = "D"
elif letter == 5:
actualLetter = "E"
elif letter == 6:
actualLetter = "F"
elif letter == 7:
actualLetter = "G"
elif letter == 8:
actualLetter = "H"
elif letter == 9:
actualLetter = "I"
elif letter == 10:
actualLetter = "J"
elif letter == 11:
actualLetter = "K"
elif letter == 12:
actualLetter = "L"
elif letter == 13:
actualLetter = "M"
elif letter == 14:
actualLetter = "N"
elif letter == 15:
actualLetter = "O"
elif letter == 16:
actualLetter = "P"
elif letter == 17:
actualLetter = "Q"
elif letter == 18:
actualLetter = "R"
elif letter == 19:
actualLetter = "S"
elif letter == 20:
actualLetter = "T"
elif letter == 21:
actualLetter = "U"
elif letter == 22:
actualLetter = "V"
elif letter == 23:
actualLetter = "W"
elif letter == 24:
actualLetter = "X"
elif letter == 25:
actualLetter = "Y"
elif letter == 26:
actualLetter = "Z"
actualLetter
被分配了与该值对应的字母。
解决方案
您可以使用string.ascii_uppercase
:
import random
from string import ascii_uppercase:
letter = random.randint(1, 26)
actualLetter = ascii_uppercase[letter - 1]
更好的是,使用random.choice
(最好的解决方案):
actualLetter = random.choice(ascii_uppercase)
或者,没有string.ascii_uppercase
:
letter = random.randint(1, 26)
actualLetter = chr(letter + ord('A') - 1)
推荐阅读
- ios - 在 spritekit 中沿 UIBezierPath 绘制节点
- mysql - 如何提高 MySQL 存储过程运行 20 秒
- java - 如何过滤和限制 LDAP 中组对象的属性
- python - 为 json 文件进行正确的输入
- node.js - Firebase - 从两个数组中过滤数据
- swift - Cocoa:如何将 swiftUI 集成到可可项目中
- kotlin - 对于多平台项目,无法将 kotlin 更新到 v1.3.50
- typescript - 如何根据 Firestore 中的 ID 验证 QR 码?
- linux - 生成报告时通过jenkins Out of Memory错误运行Jmeter脚本
- asp.net-mvc - 在 ASP.NET MVC 中生成每个控制器的 dll