【问题标题】: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]
          

          【讨论】:

            猜你喜欢
            • 2014-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-26
            • 2023-03-22
            • 2013-09-04
            相关资源
            最近更新 更多