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 12:04:37 浏览: 84
代码中有几个问题:
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('重新输入') break哪有问题
这段代码存在两个问题:
1. 当输入的指令不为空格时,会直接退出 while 循环,而不是重新输入;
2. 在输入指令时,应该将 n2 放在 input 函数内,而不是单独再输入一次。
下面是修改后的代码:
```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('指令不正确,请重新输入')
```
这样修改后,程序会在输入不正确的指令时提示重新输入,并等待新的输入。同时,空格键被改为了空字符串,与原代码等价。
改正问题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的命名规范,更易读易懂。
阅读全文
相关推荐












