2013-11-12 5 views
1

Im пытается сделать небольшую программу, но она не работает, я хочу написать 4 разных числа intenger и десятичные числа, но это не работает. Я получаю сообщение об ошибке TypeError: Невозможно преобразовать объект 'int' в str неявно. Можете ли вы, ребята, помочь мне?TypeError: Невозможно преобразовать объект 'int' в str неявно Python 3

a = str(input("Ange ett siffervärde: ")) 
b = str(input("Ange ett siffervärde: ")) 
c = str(input("Ange ett siffervärde: ")) 
d = str(input("Ange ett siffervärde: ")) 

l = (a+b+c+d) 
for l in range (a, d+1): 
    print(l) 

Я хочу, чтобы программа печатала числа, которые я вводил друг под друга.

+0

http://stackoverflow.com/questions/379906/parse-string-to-float-or-int имеет то, что вы ищете, я думаю. – doge

ответ

1

Используйте это:

a = int(input("Ange ett siffervrde: ")) 
b = int(input("Ange ett siffervrde: ")) 
c = int(input("Ange ett siffervrde: ")) 
d = int(input("Ange ett siffervrde: ")) 
+0

Если я использую int, я не могу использовать десятичные числа, – user2916710

+1

@ user2916710: Затем используйте 'float', но обратите внимание, что' range() 'не принимает значения с плавающей запятой. –

+1

@ user2916710: вам нужно рассказать нам намного больше о том, что ваша программа должна ** делать ** с цифрами здесь. –

2

Вы пытаетесь использовать d как целое:

for l in range (a, d+1): 

путем добавления 1 к нему, но вы сделали это строку:

d = str(input("Ange ett siffervärde: ")) 

Сделайте все ваши входы целые числа, вместо:

a = int(input("Ange ett siffervärde: ")) 
b = int(input("Ange ett siffervärde: ")) 
c = int(input("Ange ett siffervärde: ")) 
d = int(input("Ange ett siffervärde: ")) 

Далее ваш for цикл затирает в l переменную:

l = (a+b+c+d) 
for l in range (a, d+1): 

Не понятно, что вы хотите сделать в цикле, но сумма a, b, c и d теперь теряется, так как l также используется как переменная цикла.

Если вы хотите иметь десятичные, вы можете использовать float() вместо int(), но учтите, что range() может только работы с целыми числами!

Если вы хотите, чтобы напечатать 4 числа в цикле, а затем создать список первой и цикл непосредственно над списком:

a = float(input("Ange ett siffervärde: ")) 
b = float(input("Ange ett siffervärde: ")) 
c = float(input("Ange ett siffervärde: ")) 
d = float(input("Ange ett siffervärde: ")) 

lst = [a, b, c, d] 
for number in lst: 
    print(number) 

или объединить цикл с просьбой о количестве и печать:

lst = [] 
for count in range(4): 
    number = float(input("Ange ett siffervärde: "))  
    print(number) 
    lst.append(number) 

Эта цифра запрашивает номер четыре раза, печатает заданное число и затем добавляет это число в список для последующего использования.

+0

Я хочу, чтобы программа печатала числа, которые я сказал под каждым другим. – user2916710

+0

@ user2916710: Таким образом, вы хотите, чтобы 'l' был списком. –

+0

@ user2916710: Пожалуйста, также обновите свой вопрос (вы можете отредактировать его), чтобы добавить эту информацию. –

1

Ваши переменные a, b, c и d являются строками, а не цифрами, поэтому вы не можете передавать их в качестве аргументов range и не добавлять их в int.

1
a = int(input("a=: ")) 
b = int(input("b=: ")) 

lst = [a, b] 
for number in lst: 
    print(number) 

Это нормально в моей машине (python 2.6);

Смежные вопросы