【问题标题】:Is it possible to reuse an 'if' statement?是否可以重用“if”语句?
【发布时间】:2015-07-15 19:36:05
【问题描述】:

所以我正在做一个项目,我想知道是否可以重用“if”语句。例如,我现在的代码是

import re
import string
userinput=''
print "Hello! What is your name?"

userinput = str(raw_input("My name is "))

if not re.search(r'[A-Za-z]', userinput):
    print "That isn't a name!"
    print str(raw_input("My name is "))

它会打印出来

Hello! WHat is your name?
My name is 86124674983@
That isn't a name! 
My name is 986421674941
986421674941

如您所见,它会将除字母以外的任何内容识别为无效入口,但它只识别一次。如果您第二次输入符号,它会提示您输入名称,它会随机输入并打印它。我希望它打印出来

Hello! WHat is your name?
My name is 86124674983@
That isn't a name! 
My name is 986421674941
That isn't a name! 
My name is Eli

对不起,如果这让任何人感到困惑。如果您需要任何澄清,请不要犹豫。提前非常感谢!

【问题讨论】:

  • 如果你完全不熟悉循环的概念(几乎所有编程语言的基本结构),你真的应该看看official Python tutorial

标签: python if-statement console code-reuse reusability


【解决方案1】:

使用while 循环:

print "Hello! What is your name?"
while True:
    userinput = raw_input("My name is ")
    if not re.search(r'[A-Za-z]', userinput):
        print "That isn't a name!"
    else:
        break

print userinput

请注意,您不是 printraw_input() - 或者是 str(它已经是)。您只需要raw_input('text'),它将显示text

【讨论】:

  • 打印语句中的表达式不需要括号。
  • 即使在 print 语句中的表达式周围“不需要”括号,我认为在 python 2.x 中使用它们是很好的,因为当你开始使用 python 3.x 时,这些刚开始时可能会出现一些小错误:)
  • @RussellHickey 这就是我想要拥有它们的原因,但因为我在这里使用的是 raw_input... :)
  • @Tim 我知道raw_input 表明您正在使用python 2.x,我只是说,有时使用可以在3.x 中使用的代码会很有帮助:)如果此代码的作者决定更改为 python 3.x,他将需要检查每个 2.x 文件并将print "text" 更改为无论如何都可以工作的代码:) 我知道您可以使用查找和替换,但如果你有多个文件,这只是一个小小的节省时间:)
【解决方案2】:

使用while循环:

print "Hello! What is your name?"
while True:
    userinput = raw_input("My name is ")
    if re.search(r'[A-Za-z]', userinput):
        break
    print "That isn't a name!"
print userinput

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2021-08-21
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多