如何使无效输入仅针对数字输入显示?如何将输入转换为列表,并增加每个输入的计数?

2024-09-21 00:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我对如何使无效输入仅出现在数字输入上、如何将输入转换为列表以及如何增加每个输入的计数感到困惑?我真的试过了,但我就是想不出来

这就是问题所在:

练习17c:清单3

  1. 您将从上一个练习中获得相同的想法,该练习要求用户输入多个数字,直到用户输入“完成”

  2. 在程序的最顶层,需要assign (=)一个empty list ([])变量(While-True循环上方的行)

  3. 该程序将不断要求提供姓名列表

  4. 用户输入“完成”后,程序应显示输入的名称数量并显示最终列表。 下面显示了一个示例,说明了您的外观

EXAMPLE:

Enter a name: Mrs. Brown

Enter a name: Ms. Bliss

Enter a name: 3

That’s not a name! TRY AGAIN!

Enter a name: Mr. Kent

Enter a name: done

There are 3 names in the list [‘Mrs. Brown’, ‘Ms. Bliss’, ‘Mr. Kent’]

这就是我们目前所拥有的:

namesList = []
while True:
  name = input("Please enter a name, then press enter. When finished type done: \n")
  if name == "done":
    namesList = namesList[:-1]
    print("There are " + str(len(namesList)) + " names in the list " + str(namesList))
    break
  else:
    continue

Tags: 用户name程序true列表数字listms
3条回答

试试这个:

def hasNumbers(inputString):
  return any(char.isdigit() for char in inputString)

namesList = []
while True:
  name = input("Please enter a name, then press enter. When finished type done: \n")
  if hasNumbers(name):
    print ("That’s not a name! TRY AGAIN!")
    continue
  else:
    if name == "done":
      print("There are", len(namesList), "names in the list", namesList)
      break
    else:
      namesList.append(name)
      continue

关于什么是名字,什么不是名字,你有一个棘手的问题。(https://www.bbc.com/news/magazine-36107590

但是,在任何情况下,提供给您的要求都没有明确定义要接受或拒绝什么。您的示例表明要拒绝数字

有几种方法可以实现这一点。 在python中检查特定模式的一种方法是使用正则表达式(regex)。您可以在这里搜索,并确定用于模式匹配的健壮方法

在这种情况下,如果唯一的要求是拒绝数字,那么您还可以利用这样一个事实,即如果您请求将文本转换为整数,python将生成一个错误。您可以利用这一事实来区分字符串中的所有数字,而不是所有数字

下面的示例显示了如何使用try/except块(也是python范例)来实现这一点

ls_test_names = ['Brooke', 'Raj2', '567', '3', '3.141592654']
for t in ls_test_names:
    try:
        name = int(t)
        print('%s looks like digits to me' % t)
    except ValueError as ve:
        print('ValueError : %s' % str(ve))
        print('%s : is not all digits' % t)
        name = t
ValueError : invalid literal for int() with base 10: 'Brooke'
Brooke : is not all digits
ValueError : invalid literal for int() with base 10: 'Raj2'
Raj2 : is not all digits
567 looks like digits to me
3 looks like digits to me
ValueError : invalid literal for int() with base 10: '3.141592654'
3.141592654 : is not all digits

这是您将如何添加列表中给定的名称

namesList = []
while True:
  name = input("Please enter a name, then press enter. When finished type done: \n")
  if name == "done":
    print("There are " + str(len(namesList)) + " names in the list " + str(namesList))
    break
  else:
    namesList.append(name) #append method adds all the given names in the end of the list
    continue

相关问题 更多 >

    热门问题