Как остановить этот цикл? И каков наилучший способ сообщить пользователю самую длинную строку, которую он ввел? - PullRequest
1 голос
/ 15 марта 2012
a = input('number of names: ')

count = 0

while a > 0:
    name = raw_input("Please enter filename:")
    count =+ 1
    if count == a:
       break

Прежде всего, я довольно новичок в Python. Я только начал изучать Python 10 дней назад.

Мой первый вопрос: почему этот цикл не работает?

И после выполнения цикла я хочу сообщить пользователю, какое из файлов имеет самое длинное имя и количество символов в нем, но я не знаю почему.

Спасибо всем:)

Ответы [ 5 ]

5 голосов
/ 15 марта 2012

Вы, вероятно, намеревались написать += вместо =+.

count += 1

Оператор count =+ 1 эквивалентен count = (+1), т. Е. Он устанавливает счет в 1.

Было бы также лучше использовать более явный цикл:

number_of_names = int(raw_input('Number of names:'))
names = []
for n in range(number_of_names):
    name = raw_input('Filename')
    names.append(name)
print max(names, key = len)

Посмотрите, как он работает в сети: ideone

2 голосов
/ 15 марта 2012

вот ответ, но я думаю, вы должны потратить некоторое время на основы, и 10 дней достаточно много для этой работы.

a = input('number of names: ')

count = 0
max = -1
while a > count:
    name = raw_input("Please enter filename:")
    count += 1
    l_max = len(name)
    if l_max > max:
        max = l_max
    if count == a:
        print max
        break
1 голос
/ 15 марта 2012
a = input('number of names: ')

count = 0
largest_str = ""
while count < a:
    name = raw_input("Please enter filename:")
    count += 1
    if len(largest_str) < len(name):
        largest_str = name

print largest_str
0 голосов
/ 15 марта 2012
a = input('number of names: ')

longest = ""

for i in xrange(a): #Use for loops where you can, they are more 'pythonic'
    name = raw_input("Please enter filename:")
    if len(longest) < len(name):
        longest = name

print("The longest filename is {} which is {} characters long.".format(longest, len(longest)))
0 голосов
/ 15 марта 2012

Прежде всего, ваш цикл не очень хорошо определен.Теперь вы не используете счетчик для прерывания вашего цикла, условие

while count < a:

сделает ваш оператор break устаревшим.

Затем убедитесь, что a действительно имеет типцелое число.Вы можете сравнивать целые числа со строками здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...