如果用户名的长度在3到9个字符之间,我会尝试不接受。
print (""+winner+", please input your first name, maximum of 10 characters.")
winnername = str(input())
length = (int(len(winnername)))
if 3 > length > 10:
loop5 = 1
while loop5 == 1:
print ("name is too short")
winnername = input()
length = len(winnername)
if (length) <3 and (length) <10:
break
print ("name accept")
如果提供的输入不符合以上文字概述的要求,我希望它会循环并要求用户提供其他输入。
答案 0 :(得分:4)
if 3 > length > 10:
正在检查以确保长度小于3且大于10,这是不可能的。
因此,支票应为if 2 < length < 10:
(这对于3到9的长度是正确的)
答案 1 :(得分:0)
让我修复您的代码,简洁整洁:
while True:
# I don't know if `winner` is defined
firstname = input(""+winner+", please input your first name, maximum of 10 characters.")
if 3 < len(firstname) < 10:
break
print("name is too short or too long")
print('name accepted')
问题是3 > length > 10
将永远不会执行,因为3
永远不会比>
大10
答案 2 :(得分:0)
关于您的第一句话,据我所看到的代码,您实际上是在尝试允许最大字符数为10,而不是9。
以下是您尝试实现的可能解决方案。下面的脚本将不断询问用户,直到名称长度在允许的范围内。
print ("'+winner+', please input your first name, maximum of 10 characters.")
while True:
winnername = str(input())
if(len(winnername) < 3):
print("Name is too short")
elif(len(winnername) > 10):
print("Name is too long")
else:
break
print ("Name accepted")
您还可以考虑先对 winnername 进行一些验证(不允许使用空格或其他任何特殊字符)。
答案 3 :(得分:0)
winner = "Mustermann"
# Build a string called "prompt"
prompt = winner + ", please input your first name, between 3 and and 10 characters."
loopLimit = 5 # Make this a variable, so it's easy to change later
loop = 0 # Start at zero
winnername = "" # Set it less than three to start, so the while loop will pick it up
# Put the while loop here, and use it as the length check
# Use an or to explicitely join them
while True: # Set an infinite loop
loop += 1 # Increment the loop here.
# Add the string to the input command. The "input" will use the prompt
# You don't need the "str()", since input is always a string
winnername = input(prompt)
length = len(winnername)
# Separate the checks, to give a better error message
if (length < 3):
print ("Name is too short!") # Loop will continue
elif (length > 10):
print("Name is too long!") # Loop will continue
else: # This means name is OK. So finish
print("Name accepted!")
break # Will end the loop, and the script, since no code follows the loop
if loop >= loopLimit:
# Raise an error to kill the script
raise RuntimeError("You have reached the allowed number of tries for entering you name!")