我在尝试执行此代码时遇到麻烦,我希望用户输入一个值,程序会检查该值是否为字符串,然后返回长度。如果该值包含空格,则程序将删除空格并打印长度。但是,如果它包含任何整数值,程序将返回“不允许使用整数”
这是代码:
def length(Name):
long = len(Name)
return long
new_length = input("Please Enter Your name You can use Spaces: ")
value1 = new_length
if value1.isspace() == True:
print("This is Before Removing Spaces: " + value1)
value2 = value1.replace(" ", "")
print("This is After Removing Spaces: " + value2)
elif value1.isalpha() == True:
print("Here is The Length: ", length(value1))
elif value1.isdigit() == True:
print("Integers are not allowed! ")
else:
print("There's someting wrong with "+ value1)
因此,如果您能帮助我,我会很感激。谢谢
我不认为str.isspace
,str.isalpha
和str.isdigit
方法可以实现您期望的功能。首先,它们都测试您输入的字符串中的all字符是否是其名称中描述的类型。您的代码似乎期望如果字符的[[any匹配,它们将返回True
。也就是说,如果有any个空格,则要删除它们并显示前后两个长度。
any
函数,并向其传递一个生成器表达式,该表达式在字符串中的每个字符上调用所需的方法。if any(c.isspace() for c in user_str):
...
if
/elif
/ else
语句的条件,以便它们符合您的意图。我还要注意,您用于用户输入的变量名new_length
非常容易引起误解。它不是长度,而是您要测量长度的字符串!对具有误导性或不清楚的变量名的变量进行逻辑错误要容易得多,因此花一些时间回头重新考虑先前选择的名称有时是个好主意,因为它可以大大提高代码的清晰度!描述性的变量名很好,但是要在简洁和简洁之间进行权衡,因为长名称的键入很乏味(而且容易产生拼写错误)。它们也可能导致行长问题,从而使在编辑器屏幕上一次查看所有代码变得不那么方便。
如果字符串中只有空格字符并且至少有一个字符,则返回True,否则返回False。