Python -- вопросы новичка

Модератор: Модераторы разделов

Callisto
Сообщения: 35
ОС: Ubuntu 7.04

Python -- вопросы новичка

Сообщение Callisto »

Следующие строчки должны выводить все чётные числа от 0 до n, но почему-то не выводят.
#! /usr/bin/python
i=-1
n=input()
while i<n:
i+=1
if type(i/2.0)==type(1):
print i
Почему?
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Python -- вопросы новичка

Сообщение KiWi »

Потому что при делении int на float ВСЕГДА будет float.
Спасибо сказали:
Callisto
Сообщения: 35
ОС: Ubuntu 7.04

Re: Python -- вопросы новичка

Сообщение Callisto »

Спасибо!
Спасибо сказали:
Callisto
Сообщения: 35
ОС: Ubuntu 7.04

Re: Python -- вопросы новичка

Сообщение Callisto »

И ещё вопрос.
#! /usr/bin/python
string=raw_input(string)
ch=raw_input(ch)
kr=input(kr)
def find(string,ch,kr):
index = 0
if kr<len(str):
while index < len(str):
if string[index] == ch:
if index>=kr:
return index
index = index + 1
return -1
else:
return "Input error"
print find(string,ch,kr)
Программа выдаёт
Traceback (most recent call last):
File "/home/george/pyth9", line 2, in <module>
string=raw_input(string)
NameError: name 'string' is not defined
Что за фигня?
Спасибо сказали:
Аватара пользователя
.Serj.
Сообщения: 127
ОС: Gentoo, Win7

Re: Python -- вопросы новичка

Сообщение .Serj. »

string=raw_input(string)
NameError: name 'string' is not defined
Что за фигня?

Читать документацию по функции raw_input() до полного просветления.
Спасибо сказали:
Callisto
Сообщения: 35
ОС: Ubuntu 7.04

Re: Python -- вопросы новичка

Сообщение Callisto »

Читал, не помогает.
print string
Read a string from standard input. The trailing newline is stripped.
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
On Unix, GNU readline is used if enabled. The prompt string, if given,
is printed without a trailing newline before reading.
Спасибо сказали:
plustilino
Сообщения: 106
ОС: Xubuntu, Windows

Re: Python -- вопросы новичка

Сообщение plustilino »

string=raw_input(string)
ch=raw_input(ch)
kr=input(kr)

strint=raw_input("в кавычках вводится приглашение которое видит пользователь, любое.")

если приглашение не нужно, то можно и так
string=raw_input()
Спасибо сказали:
Callisto
Сообщения: 35
ОС: Ubuntu 7.04

Re: Python -- вопросы новичка

Сообщение Callisto »

1)Верно ли то, что аргументы функции являются глобальными переменными? Насколько я понимаю, да (поправьте меня, если ошибаюсь).
2) Следующий пример из документации по Питону поверг в недоумение:
Важное замечание: Значение по умолчанию оценивается только один раз. Например, следующая функция накапливает аргументы, переданные ей в последовательных вызовах:

Код: Выделить всё

def f(a, L=[]):
    L.append(a)
    return L


print f(1)
print f(2)
print f(3)
Это выведет:
[1]
[1, 2]
[1, 2, 3]
Если вы не хотите, чтобы происходило накопление, вы можете вместо этого написать функцию следующим образом:

Код: Выделить всё

def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L

Ведь если значение по умолчанию оценивается только один раз то значение None должно считаться только при первом вызове функции, а затем L уже не будет присваиваться значение None, условие будет неверно, и переменная L обнулиться не должна, однако на практике обнуление происходит. Почему?
Спасибо сказали: