【问题标题】:My code is not printing MIXED value while logic is ascii value of letters and numbers我的代码没有打印 MIXED 值,而逻辑是字母和数字的 ascii 值
【发布时间】:2020-10-17 23:26:03
【问题描述】:

给定一个字符串,打印它是数字、单词还是数字和字母的混合。 如果所有字符都是数值,则打印 NUMBER。如果都是字母,打印 单词。如果是混合的,打印 MIXED。

value = 'nka121fsd132'
for i in range(len(value)):
    if ((ord(value[i])>=65 and ord(value[i])<=90) or
        (ord(value[i])>=97 and ord(value[i])<=122)):
        name="WORD"
    elif (ord(value[i])>=48 and ord(value[i])<=57):
        name="NUMBER"
    elif (((ord(value[i])>=65 and ord(value[i])<=90) or
          (ord(value[i])>=97 and ord(value[i])<=122)) or 
          (ord(value[i])>=48 and ord(value[i])<=57)):
        name="MIXED"
print(name)

这里打印的是NUMBER,而不是MIXED

【问题讨论】:

  • 输出是NUMBER,因为 value 的最后一个元素是一个数字。您的循环遍历所有元素,并在每次迭代时设置 name。顺便说一句 - for i in value: 是 Python 的方式。

标签: python-3.x string ascii


【解决方案1】:
user_input = input('Enter your desired input:')
count_integer = 0
count_alphabet = 0
count_mixed = 0
for i in user_input: 
  ord_ver = ord(i)
  if (ord_ver>=65 and ord_ver<=90) or (ord_ver>=97 and ord_ver<=122) :
    count_alphabet += 1
  elif ord_ver>=48 and ord_ver<=57:
    count_integer += 1
if count_integer > 0 and count_alphabet > 0:
  print('MIXED')
elif count_integer > 0:
  print('NUMBER')
else:
  print('WORD')

【讨论】:

    【解决方案2】:

    Python 为这些任务提供了内置函数,请参阅 https://docs.python.org/3/library/stdtypes.html 的字符串方法

    value = 'nka121fsd132'
    print('False' if not value.isprintable()  # no printable characters
          else 'EMPTY' if value == ''         # empty string
          else 'NUMBER' if value.isdigit()    # only digits
          else 'WORD' if value.isalpha()      # only characters
          else 'MIXED'                        # digits, characters, spaces
          )
    

    输出:

    MIXED
    

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 1970-01-01
      • 2021-09-26
      • 2020-12-07
      • 2019-11-29
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多