ch_lis=[] while True: character=input('请输入你喜欢的人物') n2=input('请输入一个指令') if n2==' ': if ch_lis.find(character)!=-1: ch_lis.append(character) print(ch_lis) for ch in ch_lis: print(ch) else: print('名字已存在') continue else: print('重新输入') continue哪有问题
时间: 2024-02-14 18:04:37 浏览: 72
代码中有几个问题:
1. `ch_lis=[]`应该放在while循环外面,否则每次循环都会重置为空列表;
2. `ch_lis.find(character)`应该改为`character in ch_lis`,因为列表没有find方法;
3. `for ch in ch_lis:`的缩进错误,应该在第二个if语句内缩进;
4. 在第二个if语句中,应该判断`if n2=='':`而不是`if n2==' ':`,因为空格不等于空字符串。
下面是修改后的代码:
```python
ch_lis = []
while True:
character = input('请输入你喜欢的人物:')
n2 = input('请输入一个指令:')
if n2 == '':
if character in ch_lis:
print('名字已存在')
else:
ch_lis.append(character)
print(ch_lis)
for ch in ch_lis:
print(ch)
else:
print('重新输入')
continue
```
相关问题
ch_lis = [] while True: character = input('请输入你喜欢的人物') n2 = input('请输入一个指令') if n2 == ' ': if character in ch_lis: print('名字已存在') else: ch_lis.append(character) print(ch_lis) for ch in ch_lis: print(ch) else: print('重新输入') continue 有啥问题
这段代码存在一些问题:
1. 在判断是否存在重复名字时,应该使用 `if character in ch_lis:` 而不是 `if character in name:` 。
2. 在输入指令时,应该使用 `input()` 函数而不是 `input` 。
3. 在判断输入指令是否为空时,应该使用 `if not n2.strip():` 而不是 `if n2 == ' ':` 。
4. 在输出人物列表时,应该使用 `for ch in ch_lis:` 而不是 `for ch in name:` 。
5. 在重新输入时,应该使用 `continue` 关键字来跳过本次循环,而不是直接跳转到下一行代码。
6. 可以在程序开头加上一个提示信息,告诉用户该程序的作用和使用方法。
改进后的代码如下:
```python
print('欢迎使用人物列表程序!')
ch_lis = []
while True:
character = input('请输入你喜欢的人物:')
n2 = input('请输入一个指令:')
if not n2.strip():
if character in ch_lis:
print('名字已存在')
else:
ch_lis.append(character)
print(ch_lis)
for ch in ch_lis:
print(ch)
else:
print('重新输入')
continue
```
希望对你有所帮助!
改正问题def repeat2(lis): if len(set(lis))<len(lis): return True b = input('请输入一个列表:') p = list(b) print(repeat2(p)) print('原来输入的列表{}'.format(p))
可以对代码进行如下修改来解决问题:
1. 修改函数名为`has_duplicate`,更符合Python的命名规范。
2. 修改`input`函数为`eval(input())`,这样可以将输入的字符串自动转换为列表,无需再手动转换。
3. 修改输出语句,将原来输入的列表单独输出一行。
修改后的代码如下:
```python
def has_duplicate(lst):
if len(set(lst)) < len(lst):
return True
lst = eval(input('请输入一个列表:'))
print(has_duplicate(lst))
print('原来输入的列表:{}'.format(lst))
```
这样改正后,用户可以输入任意类型的列表,而不仅仅是数字字符。同时,修改后的函数名更符合Python的命名规范,更易读易懂。
阅读全文