大家好,如果输入一个数字,然后输入一个char,则返回None。我对这个没有任何线索。欢迎任何帮助。 我已经尝试过打印这些值,但它会在返回时发生变化!
import string
def get_input_char(char):
char = str.lower(input("Input a letter: "))
if not char in string.ascii_letters or char == "" or char == None:
print("Character " + char + " not valid. Try again.\n")
char = str(get_input_char(char))
else:
return char
print (char)
word_frag = ""
while True:
word_frag += get_input_char("")
print("\nThe current word fragment is " + word_frag)
答案 0 :(得分:7)
如果你的函数在print
语句之后一直到最后,它就不会返回任何内容。函数返回的默认值为None
。
答案 1 :(得分:2)
正如Mark指出的那样,问题是如果第一个输入的值无效,则不返回任何值。您的代码中还有其他一些不太正确的事情:
char is None
而不是char == None
。如果您正在测试的对象已被自定义为等于None
,则检查相等性可能会产生意外结果。检查身份(使用is
)会更加健壮。我建议重写这样的函数:
def get_input_char():
while True:
char = str.lower(input("Input a letter: "))
if len(char) == 1 and char in string.ascii_letters:
break
else:
print("Character '%s' not valid. Try again.\n" % char)
return char