【问题标题】:Picking specific character and setting it into a var选择特定字符并将其设置为 var
【发布时间】:2020-07-06 11:26:22
【问题描述】:
我正在尝试制作一个将特定字符转换为数字的程序..
例如将 a 设置为 51251
和 b 到 75414
如果你输入'ab',你会得到 = 5125175414
我试过这个:
a = '742461'
b = '634146'
c = '634174'
answer = '0'
en = input("Here: ").lower()
while True:
if en == 'a':
answer1 = answer + a
print("a")
elif en == 'b':
answer1 = answer + a
elif en == 'c':
answer1 = answer + a
elif en == 'done':
print(f"{answer1}")
else:
print("error")
但它根本不起作用:/。
大家有什么想法吗?
【问题讨论】:
标签:
python
string
if-statement
variables
【解决方案1】:
您可以尝试这会要求用户输入字符,直到他输入完成,并将字符的值聚合到答案中
a = '742461'
b = '634146'
c = '634174'
answer = ''
while True:
en = input("Here: ").lower()
if en == 'a':
answer += a
print("a")
elif en == 'b':
answer += b
elif en == 'c':
answer += c
elif en == 'done':
print(f"{answer}")
else:
print("error")
【解决方案2】:
除了需要在循环的每次迭代中读取输入之外,您通常会为此使用字典:
values = {
'a': '742461',
'b': '634146',
'c': '634174'
}
answer = '0'
while True:
en = input().lower().strip()
if en == 'done':
break
answer += values[en]
print(answer)
这样代码更短,无需修改多个代码部分即可轻松扩展。
【解决方案3】:
您可以像这样使用字典来获得更好的方法:
maps = {'a': '742461', 'b': '634146', 'c': '634174'}
en = input("Here: ").lower()
print(''.join([maps.get(e, '') for e in en]))
这会将输入作为字符串(例如:'ab')并返回所需的输出。
【解决方案4】:
您必须在 while 循环的每次迭代中获取输入,然后对其进行处理,因此 en = input("Here: ").lower() 必须在 while True 内。 'answer' 是一个字符串,因此无需使用 '0' 对其进行初始化。所以也许是这样的:
a = '742461'
b = '634146'
c = '634174'
answer = ''
while True:
en = input("Here: ").lower()
if en == 'a':
answer += a
elif en == 'b':
answer += b
elif en == 'c':
answer += c
elif en == 'done':
print(answer)
break
else:
print("error")
或者你可以像这样使用字典:
d={
'a':'742461',
'b':'634146',
'c':'634174'
}
answer = ''
while True:
en = input("Here: ").lower()
if en == 'done':
print(answer)
break
if en not in d:
print("error")
answer+=d[en]