我做得不对,我不知道该怎么做。
获取用户输入并创建一个主题字符串列表。程序应该要求一个特定的输入主题。用户应该为列表输入字符串,直到满足条件,例如输入特定的单词或字符。不应该有硬编码的列表大小。每个用户输入应该是一个列表元素。
MyList = []
for _ in range(5):
planets = str(input("Enter 5 planets: "))
if planets == str(planets):
if planets not in MyList:
MyList.append(planets)
else:
print("Input not valid")
print("That's your planets: ")
print(str(MyList))
我不太明白。要验证某个东西是否为字符串,应该是isinstance(something, str)
。但是输入总是返回一个字符串。不需要做额外的验证。顺便说一下,如果你只想消除重复的项目,我建议使用集合而不是列表。对print()调用str()也是多余的,因为print()会自己完成转换。所以:
print("Enter 5 planets: ")
result = {input(f"{i}) ") for i in range(1, 6)}
print("That's your planets:", ", ".join(result))
MyList = []
for _ in range(5):
planets = input("Enter 5 planets: ")
if type(planets) == str:
if planets not in MyList:
MyList.append(planets)
else:
print("Input not valid")
print("That's your planets: ")
print(",".join(MyList))
实际上,input()
函数定义的任何变量都将始终是str
数据类型,因为即使它是一个数字,它仍然是字符串表示在这个数字中。即使用户根本不输入任何值,它仍然是一个空字符串""
。
我不确定你想对输入做什么样的验证,但如果你想验证它不是一个数字,你可以使用isdigit()
string方法。
下面是一个简单的例子:
planets = []
while True:
planet = input("Insert the name of a planet: ")
if planet == 'quit':
break
if not planet.isdigit() and not planet in planets:
planets.append(planet)
print("Here is your list of planets:")
for planet in planets:
print(planet)
这段代码不断提示用户输入planet
名称,直到输入关键字quit。如果输入的不是数字,也不在planets
列表中,则将其添加。最后,显示了行星的完整列表。
必须指出,在概念层面上,这种实现没有多大意义。更合乎逻辑的做法是列出所有已知的行星,并检查输入的输入是否与列表中的任何条目匹配。在这种情况下,检查字符串是否表示数字变得相当没有意义。