Operacja na przyjętych liczbach (zamiana string na int)

Odpowiedz Nowy wątek
2015-11-04 11:49

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0

Cześć mam problem z operacją na przyjetych liczbach, które są przymowane jako string, po wklepaniu "int (input())" wyskakuje, że "TypeError: 'int' object is not iterable"

(q,w,e,r,t,y,u,i,o,p,a)=input()
liczby=[q,w,e,r,t,y,u,i,o,p,a]
print (liczby)
(suma)=q*5+w*5+e*5
print (suma)

Jakieś pomysły?

edytowany 1x, ostatnio: Pixelmind, 2015-11-04 11:49

Pozostało 580 znaków

2015-11-04 13:04

Rejestracja: 12 lat temu

Ostatnio: 6 godzin temu

0

http://ideone.com/A9OiTd (akurat ostatni przykładzik jaki pisałem powinien ci pomóc).


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2015-11-04 13:05

Pozostało 580 znaków

2015-11-04 13:22

Rejestracja: 6 lat temu

Ostatnio: 9 godzin temu

1

odpowiednik twojego kodu

>>> list("039843084984")
['0', '3', '9', '8', '4', '3', '0', '8', '4', '9', '8', '4']
>>> list(map(int, list("039843084984")))
[0, 3, 9, 8, 4, 3, 0, 8, 4, 9, 8, 4]
>>> liczby = list(map(int, list("039843084984")))
>>> liczby
[0, 3, 9, 8, 4, 3, 0, 8, 4, 9, 8, 4]
>>> liczby[:3]
[0, 3, 9]
>>> sum(liczby[:3] * 5)
60

Pozostało 580 znaków

2015-11-04 20:31

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

Lokalizacja: Kraków

0

Używanie funkcji input w python2.7 to ryzykowna sprawa. Python wówczas stara się rozpoznać typ wartości jaki ma zwrócić:

Equivalent to eval(raw_input(prompt)).

This function does not catch user errors. If the input is not syntactically valid, a SyntaxError will be raised. Other exceptions may be raised if there is an error during evaluation.

If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.

Consider using the raw_input() function for general input from users.

Źródło: https://docs.python.org/2/library/functions.html#input

Przykład:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = input()
2.7
>>> type(a)
<type 'float'>
>>> b = input()
2
>>> type(b)
<type 'int'>
>>> c = input()
2, 8, 9, 10
>>> type(c)
<type 'tuple'>

Na twoim miejscu użyłbym funkcji raw_input:

line = raw_input()
tokens = line.split()
numbers = [int(token) for token in tokens]
q,w,e,r,t,y,u,i,o,p,a = numbers

Pozostało 580 znaków

2015-11-10 09:25

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0

Pisze w 3, więc nadal mam problemy z tą błachostką, nie ma jakiegoś sposobu by zamienić jakoś wszystkie wczytane zmiene na int?
Używając listy, nadal nie ma pożądanego efektu.

Nie było tematu ;)

(suma)=int(q)*5+int(w)*5+int(e)*5
edytowany 1x, ostatnio: Pixelmind, 2015-11-10 09:42

Pozostało 580 znaków

2015-11-10 09:47
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 miesiąc temu

0

Przecież dostałeś odpowiedź od @pyholic, wystarczy zmienić raw_input na input.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-11-10 10:52

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0
bogdans napisał(a):

Przecież dostałeś odpowiedź od @pyholic, wystarczy zmienić raw_input na input.

Gdzie ja w kodzie mam raw_input?

Pozostało 580 znaków

2015-11-10 11:30
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 miesiąc temu

0

Ty nigdzie, ale w rozwiązaniu @pyholic'a jest raw_input.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0