Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2012 11:19:00

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Подскажите ошибку

Здраствуйте. Пытался написать скрипт, выдающий квадратные корни от значения a до b, но почему то вычисляет не все. Подскажите ошибку. Заранее спасибо.

# coding: utf-8
print u"Введите начало отсчета"
a = int(input())
i = a
print u"Введите конец отсчета"
b = int(input())
while i < b:
	c = a ** 2
	print u"Квадрат числа", a, u"равен", c
	i = i + 1
	a = i + 1

Результат такой (обратите внимание, что i сначала просчитывается +2, а потом +1):

Введите начало отсчета
3
Введите конец отсчета
6
Квадрат числа 3 равен 9
Квадрат числа 5 равен 25
Квадрат числа 6 равен 36

Отредактировано Razor (Сен. 13, 2012 11:21:58)

Офлайн

#2 Сен. 13, 2012 11:47:46

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Подскажите ошибку

Квадратные корни это немного другое.

Проблема здесь скорее с месивом из переменных и вычислений. Попробуйте сравнить ваш код и этот:

# coding: utf-8
 
first_num = int(input("Введите начало отсчета: "))
last_num = int(input("Введите конец отсчета: "))
 
print "Начинаем с {0} и заканчиваем {1}:\n".format(first_num, last_num)
 
current_num = first_num
 
while current_num <= last_num:
    print "Квадрат числа {0} равен {1}".format(current_num, current_num ** 2)
    current_num += 1

Тут не возникнет проблем с индексами, сложениями и так далее. Запутаться тут не в чем. Разве что вас может напугать format, про который ни в одном учебнике не пишут :)

Цикл while, в котором в условии стоит некий счетчик, который инкрементируется в теле цикла, называется for:
# coding: utf-8
 
first_num = int(input("Введите начало отсчета: "))
last_num = int(input("Введите конец отсчета: "))
 
print "Начинаем с {0} и заканчиваем {1}:\n".format(first_num, last_num)
 
for current_num in xrange(first_num, last_num + 1):
    print "Квадрат числа {0} равен {1}".format(current_num, current_num ** 2)



Отредактировано fata1ex (Сен. 13, 2012 11:49:56)

Офлайн

#3 Сен. 13, 2012 15:31:20

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Подскажите ошибку

Нет ничего странного что пропускается элемент a+1 ведь у вас же написано:

    i = i + 1
    a = i + 1



Офлайн

#4 Сен. 13, 2012 15:43:48

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Подскажите ошибку

В целом это странный код. Обычно при работе с рядом чисел сразу видишь range|xrange

for i in range(a, b+1):
    print(i, i**2)
# или
r = [(x, x**2) for x in range(a, b+1)]
for i, i2 in r:
    print(i, i2)



Офлайн

#5 Сен. 13, 2012 19:44:19

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Подскажите ошибку

Griffon
В целом это странный код. Обычно при работе с рядом чисел сразу видишь range|xrange
for i in range(a, b+1):
    print(i, i**2)
# или
r = [(x, x**2) for x in range(a, b+1)]
for i, i2 in r:
    print(i, i2)
Griffon, я энтузиаст-самоучка. Учусь на третьем курсе юриспруденции, но в детстве очень-очень увлекала математика. Я сейчас всего-то изучаю цикл for, но изучаю основательно (начал обучение где-то дней 5 назад), чтобы запомнить. Наставника, к моему большому сожалению, тоже не имею. Ну разве что это форум. )

А по сабжу, fata1ex описал код, я потом только заметил, что a подразумевает в вычислениях i, а вот i не подразумевает a. Исправил, заработало. Но все равно спасибо, что проявили внимание к теме. ) Обязательно, как изучу язык чуть глубже разберу ваши варианты (сравнение, как можно решать задачи иными способами).

Отдельное огромное спасибо хочу сказать fata1ex, и не только за помощь, а еще и за .format. Отлично упрощает код и повышает читабельность.

Отредактировано Razor (Сен. 13, 2012 19:45:47)

Офлайн

#6 Сен. 14, 2012 03:02:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Подскажите ошибку

Razor
Griffon, я энтузиаст-самоучка. Учусь на третьем курсе юриспруденции, но в детстве очень-очень увлекала математика.
сперва определяется конкретная цель, затем конкретный способ её достижения, а затем уже пишется код

у тебя цель не поставлена



Офлайн

#7 Сен. 14, 2012 08:44:16

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Подскажите ошибку

py.user.next
сперва определяется конкретная цель, затем конкретный способ её достижения, а затем уже пишется код

у тебя цель не поставлена

Что именно вы подразумеваете под целью? Глобальная цель? Я хочу по возможности окончить высшее (возможно и заочное, ради диплома) на программера, а сейчас пытаюсь понять, надо оно мне или нет. Если через год не потеряю интерес - пойду на высшее.

Если вы имели ввиду цель по сабжу, то цель, вроде, ясна: задается начальное число a, конечное число b, а потом вычисляется квадрат всех чисел между a и b. Практического значения эта задание не имеет, а в плане практики - вещь хорошая.

Офлайн

#8 Сен. 14, 2012 13:43:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Подскажите ошибку

Razor
задается начальное число a, конечное число b, а потом вычисляется квадрат всех чисел между a и b
что такое “квадрат всех чисел” ?



Офлайн

#9 Сен. 15, 2012 15:57:12

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Подскажите ошибку

py.user.next
Razor
задается начальное число a, конечное число b, а потом вычисляется квадрат всех чисел между a и b
что такое “квадрат всех чисел” ?

Я понял к чему вы клоните. Я имел ввиду "Квадрат каждого персонального числа от числа a до числа b". Зачем? Просто потому-что

Офлайн

#10 Сен. 16, 2012 09:06:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Подскажите ошибку

было

Razor
скрипт, выдающий квадратные корни от значения a до b

стало
Razor
Квадрат каждого персонального числа от числа a до числа b

нужно
Razor
Вывести на экран квадраты всех натуральных чисел от a до b включительно.

один из способов

словесное описание:
1. ввести границы, первое и второе число
2. пока первое число не больше второго:
2.1 вывести квадрат первого числа
2.2 увеличить первое число на единицу

стадия блок-схемы пропущена

стадия псевдокода пропущена

код:
>>> # coding: utf-8
... 
>>> def f():
...     a = int(raw_input("Введите начало отсчета "))
...     b = int(raw_input("Введите конец отсчета "))
...     
...     while a <= b:
...         print u"Квадрат числа", a, u"равен", a * a
...         a += 1
... 
>>> f()
Введите начало отсчета 5
Введите конец отсчета 25
Квадрат числа 5 равен 25
Квадрат числа 6 равен 36
Квадрат числа 7 равен 49
Квадрат числа 8 равен 64
Квадрат числа 9 равен 81
Квадрат числа 10 равен 100
Квадрат числа 11 равен 121
Квадрат числа 12 равен 144
Квадрат числа 13 равен 169
Квадрат числа 14 равен 196
Квадрат числа 15 равен 225
Квадрат числа 16 равен 256
Квадрат числа 17 равен 289
Квадрат числа 18 равен 324
Квадрат числа 19 равен 361
Квадрат числа 20 равен 400
Квадрат числа 21 равен 441
Квадрат числа 22 равен 484
Квадрат числа 23 равен 529
Квадрат числа 24 равен 576
Квадрат числа 25 равен 625
>>>



Отредактировано py.user.next (Сен. 16, 2012 09:09:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version