我需要这个简单问题的帮助 . 我开始学习更多有关while循环的知识,而且我不确定我做错了什么 .
有3个标准:
1)字符串必须以“b”或“B”开头
2)字符串必须有6个字符
3)字符串的最后一个字母必须是“z”或“Z”
如果不满足任何条件,它将打印“错误”并再次提示用户 . 它将打印出“Nice!”如果符合标准 .
这是我的代码:
string = input("Enter a string: ")
length = len(string)
while (not(string[0] == "b" or string[0] == "B" or string[length-1] == "z" or string[length-1] == "Z" and length < 6)):
print("Error!")
string = input("Enter a string: ")
print("Nice! ")
如果输入“1000”,输出将为“错误!”如果输入“bz”,输出将为“Nice!” . 它应该在长度小于6时打印错误消息 .
5 回答
你可以做一些简单的事情,如使用
str.startswith
和str.endswith
来测试边界字符:首先检查长度,以便一旦
len
表达式(O(1)操作)失败,条件就会短路 .最重要的python习惯之一就是让你的代码易于阅读 . 这有助于您自己快速发现错误,而其他人可以毫不费力地理解您的代码 . 因此,我建议将您的问题编码如下:
打印:
如前所述:
你没有在while循环中更新lengh
你说字符串长度必须等于6但你写的条件"it has to be smaller than 6":
<6
编写条件的另一种方式(看起来对我来说更易读):
改变这一点
至