2014-01-13 4 views
-1

программа просит пользователя ввести 5 уникальных номеров, если номер уже указан в списке, попросите новый номер. после того, как 5 уникальных номеров были введены, отображение спискаКак заменить значение в списке

numbers = ['1','2','3','4','5'] 
count = 0 
index = 0 
while count <6: 
    user = raw_input ("Enter a number: ") 
    if user in numbers: 
     print "not unique" 
    if user not in numbers: 
     print "unique" 
     count += 1 
     numbers = numbers.replace(index,user) 
     index +=1 
    print numbers 

, когда программа попадает в метод замены, это вызовет ошибку атрибута

+1

[Установить тип] (http://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset) может быть полезным вам, поскольку он автоматически обеспечивает уникальность. Когда вы пытаетесь «добавить» элемент в набор, если он уже находится в наборе, то он не действует. – Kevin

ответ

2

Вы можете использовать:

numbers[index] = user 

список не имеет метод replace(). Однако строка имеет метод замены.

Если вы хотите добавить номер к концу списка, вы можете использовать append():

numbers.append(user) 

Если вы хотите, чтобы вставить номер в заданном положении, вы можете использовать insert() (например, положение 0):

numbers.insert(0, user) 
1

Вы можете заменить его подстрочный индекс обозначения, как это

numbers[index] = user 

Помимо этого программа может быть улучшена, как этот

numbers = [] 
while len(numbers) < 5: 
    user = raw_input ("Enter a number: ") 
    if user in numbers: 
     print "not unique" 
    else: 
     print "unique" 
     numbers.append(user) 
print numbers 
2

Вы не должны инициализировать список в Python:

numbers = [] 

while len(numbers) != 5: 
    num = raw_input('Enter a number: ') 
    if num not in numbers: 
     numbers.append(num) 
    else: 
     print('{} is already added'.format(num)) 

print(numbers) 
0

Если вы не заботитесь о порядке номеров, вы должны, вероятно, изучить комплекты. Если вы хотите работать с числами, а не строками, вы должны указать строку в int. Я бы написал что-то вроде этого.

nums = set() 

while len(nums) < 5: 
    try: 
     nums.add(int(raw_input("Enter a number: "))) 
    except ValueError: 
     print 'That is not a number!' 
    print 'Numbers entered: {}'.format(', '.join(str(x) for x in nums)) 

Выход:

Enter a number: 5 
Numbers entered: 5 
Enter a number: 3 
Numbers entered: 3, 5 
Enter a number: 1 
Numbers entered: 1, 3, 5 
Enter a number: 7 
Numbers entered: 1, 3, 5, 7 
Enter a number: 9 
Numbers entered: 1, 3, 9, 5, 7 
Смежные вопросы