检查 raw_input 字典

Check raw_input for dictionary

我查看了 Whosebug 来解决我的问题,但是根据所有关于循环和检查的解释,我不明白为什么我的代码不起作用。 所以我想建立一个字典(对 Python btw 来说是全新的),我读到我也可以检查输入是否在 dicitonary 模块中,但这实际上不是我想在这里做的。我只想看看 raw_input 是否在字符串中至少包含一个数字(如果字符串只包含数字则不行)以及输入字符串的长度是否至少为 2。 如果输入通过了这些检查,它应该继续(这本词典的其余部分将在稍后出现。现在我只想了解我的检查做错了什么) 这是我的代码,非常感谢您的帮助!

def check():
    if any(char.isdigit() for char in original):
        print ("Please avoid entering numbers. Try a word!")
        enter_word()
    elif len(original)<1:
        print ("Oops, you didn't enter anything. Try again!")
        enter_word()

    else:
        print ("Alright, trying to translate:")
        print ("%s") %(original)

def enter_word():
    original = raw_input("Enter a word:").lower()
    check()

enter_word()

编辑:现在可以完美地使用以下代码:

def check(original):
    if any(char.isdigit() for char in original):
        print "Please avoid entering numbers. Try a word!"
        enter_word()
    elif len(original) < 1:
        print "Oops, you didn't enter anything. Try again!"
        enter_word()
    else:
        print "Alright, trying to translate:"
        print "{}".format(original)

def enter_word():
    original = raw_input("Enter a word:").lower()
    check(original)

enter_word()

您需要将输入 original 传递给您的 check() 函数:

def check(original):
    if any(char.isdigit() for char in original):
        print("Please avoid entering numbers. Try a word!")
        enter_word()
    elif len(original) < 1:
        print("Oops, you didn't enter anything. Try again!")
        enter_word()
    else:
        print("Alright, trying to translate:")
        print("{}".format(original))

def enter_word():
    original = input("Enter a word:").lower()
    check(original)

enter_word()

除此之外,您的代码中还有一些语法错误。由于您使用 print() 而不是 print,我假设您使用的是 Python3。但是,要读取用户输入,您使用了 raw_input(),这是 Python2 中的做法,在 Python3 中变成了 input()。我修好了这个。我修复的另一件事是 else 分支中 print() 语句的字符串格式。你可以看看 string format mini-language.