2013-12-12 4 views
0

Я очень новичок в Python 2.7, и я не знаю, какую структуру лучше всего использовать для этого скрипта.Расчет формул Python с пользовательского ввода

Я думаю, что моя проблема в том, что я не знаю, как сделать Python хранения данных, вводимых пользователем для дальнейшего использования в сценарии ..

весь сценарий.

# -*-coding: utf-8 -*- 
import sys 
from sys import argv 

prompt = '>' 

# user inputs.. values to be used in calculation 
ri = int(input("inre bockningsradie i mm:")) 
L1 = int(input("längd på plåt som 'står':")) 
L2 = int(input("längd på plåt som 'ligger':")) 
t = int(input("tjocklek på plåt:")) 
a1 = int(input("bockningsvinkel i grader:")) 

# 
L1_total = L2 - t - ri 
L2_total = (L2, - t, - ri,) 
Lb_total = multiply(ri, pi)/180 
rn = multiply(t, k) + rn 
k = divide(r, t) 
L_total = (L1, + L2, + Lb_total) 

print "beräkning av ämneslängd för kantbokning" 
print "ämneslängden är: ", L_total 

Runetime ошибка: Ошибка выполнения:

[email protected] ~/Documents/scripts_r_w $ python amneslangd.py 

inre bockningsradie i mm:213 
längd på plåt som 'står':123 
längd på plåt som 'ligger':123 
tjocklek på plåt:123 
bockningsvinkel i grader:123 

Traceback (most recent call last): 
File "amneslangd.py", line 18, in <module> 
L1_total = L2 - t - ri 
TypeError: unsupported operand type(s) for -: 'int' and 'str' 

Формулы Источник:

Можно найти по адресу: http://s30.postimg.org/gq2vqzz1b/formula.jpg

------------ ---------------------ЗАДАНИЕ ВЫПОЛНЕНО--------------------------- --------------

Спасибо за ваши ребята! После исправления первой проблемы возникло больше ошибок! Помимо ошибок во время выполнения, я нашел там и некоторые схематические ошибки. Но ниже приведена версия, которая работает по назначению .. Небольшая очистка ...

Вопрос на стороне: есть ли способ сделать поплавок (ввод) также принимать запятые и периоды как 0,72 вместо/или 0,72?

# -*-coding: utf-8 -*- 
import sys 
from sys import argv 

print "\n" 
print "\tScript som räknar ut ämneslängden för kantbockning i plåt!" 
print "\n\tOBS. Korrektionsfaktorn i tabell kanske står som: 0,72" 
print "\tDu ska skriva in värdet som 0.72" 
# line below means exchange comma(,) for a period(.).. 
print "\tAlltså, byt ut comma(,) mot en punkt(.)!" 
print "\n" 

# user inputs.. values to be used in calculation 
ri = int(input("(ri) inre bockningsradie i mm: ")) 
L1 = int(input("(L1) vertikal kanthöjd: ")) 
L2 = int(input("(L2) horizontel kanthöjd: ")) 
t = int(input("(t) tjocklek på plåt: ")) 
a1 = int(input("(a) bockningsvinkel: ")) 
k = ri/t 

# prints k as integer so user can look up k1 from a table 
print "\nVad är (k)korrekktionsfaktor i kolumn: %d, rad: %d?" % (k, a1) 
# below prompts the user for the value he got when looking up "k" from table 
k1 = float(input("\nk = ")) 


l1_total = L1 - t - ri # returns l1 
l2_total = L2 - t - ri # returns l2 
rn = (t * k1)/2 + ri 
lb_total = (rn * 3.14 * a1)/180 # returns lb 
L_total = (l1_total + l2_total + lb_total) # returns L 

print "\n\t(L)Ämneslängden är: ", L_total 
print "\n" 
+1

Вы уверены, что на самом деле это код, который выполняется? Это работает для меня, когда я пытаюсь. (Или, по крайней мере, он проходит мимо этой строки - 'multiply' не определен, поэтому я получаю' NameError'.) Добавьте «print» здесь! »' После 'prompt' для проверки. – DSM

+0

Я полагаю, что 'L2_total = (L2, - t, - ri,)' опечатка, и на самом деле у вас нет запятых? – 9000

+0

@DSM попробуйте добавить 'from numpy import *'. – Kraay89

ответ

0

ошибка говорит вам, что не может сделать математическую операцию между целым числом и строкой:

L1_total = L2 - t - ri 

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

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