Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有一个明显的和简单的改进,以验证stdin比我所做的?_Python_String_Input_While Loop - Fatal编程技术网

Python 是否有一个明显的和简单的改进,以验证stdin比我所做的?

Python 是否有一个明显的和简单的改进,以验证stdin比我所做的?,python,string,input,while-loop,Python,String,Input,While Loop,我想知道从用户那里获取输入的最佳方式是什么,希望是标准方式。我觉得我正在做的事情很乏味/杂乱无章 我在下面做的事情是否被认为是可以接受的,或者我是否应该寻求改进,不是为了提高效率,而是因为它会导致错误、效率低下等等 while True: title = input('Enter a title (50 char): ') if len(title) > 50: print('Title too long; no more than 50 characte

我想知道从用户那里获取输入的最佳方式是什么,希望是标准方式。我觉得我正在做的事情很乏味/杂乱无章

我在下面做的事情是否被认为是可以接受的,或者我是否应该寻求改进,不是为了提高效率,而是因为它会导致错误、效率低下等等

while True:
    title = input('Enter a title (50 char): ')

    if len(title) > 50:
        print('Title too long; no more than 50 characters allowed')
    elif:
         # as many elifs as needed, such as '< 10', etc.
    else:
         break
为True时:
标题=输入('输入标题(50个字符):')
如果len(标题)>50:
打印('标题太长;不允许超过50个字符')
埃利夫:
#需要多少个ELIF,如“<10”等。
其他:
打破

我看不出你的方法有什么根本性的错误,但我知道你的意思——所有那些悬挂着的elif都不整洁/不雅观。 另一种可能是定义一个适当的正则表达式,它可以以非常通用的方式对允许的输入进行编码,并执行单个匹配查询。 例如:

import re
permitted_re=re.compile('([ a-zA-Z0-9]{10, 50})(.*)')

while 1:
  my_try=input('Enter your title: ')
  a=permitted_re.match(my_try)
  if a and a.group(0)==a.group(1):
    break
  else:
    print('Try again: ')

正则表达式分为两部分。第一个匹配方括号之间列出的范围内的任何字符,重复{最小,最大}次。如果输入的字符超过50个,表达式仍将通过,因此第二部分将捕获超过50个的字符。如果表达式匹配,则组(0)保存完整字符串,组(1)保存匹配的前50个字符,因此如果输入的字符超过50个,则If测试将失败。如果你是一个正则表达式向导,可能会有更多的防爆炸和优雅的选项

老实说,我觉得这很好。也许你可以继续问下去。但首先检查他们的发帖标准。很酷,谢谢:)你能在代码中显示你的意思吗?根据要求添加了代码示例。谢谢,伊恩,我很感激。老实说,我一直想看看正则表达式,所以这可能是一个开始的好时机:)我很高兴知道我没有发疯。我可以接受,没有太多可以改进的地方,但正则表达式肯定会很好地使用。我发现自己经常使用re(小心-有两个正则表达式模块可用;正则表达式是另一个),当然,这是我需要解决的问题的函数。学习曲线开始时有点陡峭,但值得付出努力。祝你好运啊,regex只是我使用的一个缩写,我不知道有一个模块叫它-我会注意的。谢谢,伊恩:)