2014-12-14 7 views
0

Я пишу скрипт python, когда я использую свое радио. При попытке рассчитать длину волны я получаю OverflowError. Возможно ли преодолеть эту проблему?OverflowError: повторяющаяся строка слишком длинная

Вот мой код:

while 1: 
cmd = input("Enter command: ") 
if cmd == 'wavelength': 
    freq = input("Enter frequency (mHz): ") * 10**6 
    wl = freq * 299792458 
    print (wl) 

Вот результат:

Enter command: wavelength 
Enter frequency (mHz): 33 
Traceback (most recent call last): 
    File "C:/Users/Ross/Desktop/Programming/Python/Radio/main.py", line 5, in <module> 
    wl = freq * 299792458 
OverflowError: repeated string is too long   
+0

'wl = freq * 299792458' должно быть, должно быть' wl = int (freq) * 299792458' –

+0

это также может быть 'float' – jamylak

ответ

1

Ваш код

if cmd == 'wavelength': 
    freq = input("Enter frequency (mHz): ") * 10**6 
    wl = freq * 299792458 
    print (wl) 

имеет не только одна проблема, она имеет две проблемы

  1. input функция возвращает строку символов, что вы соглашаетесь enate себе миллион раз, скажем «107.6107.6107.6 ... 107.6», всего миллион раз.
    Вы хотите преобразовать ваш ответ на точку Nuber плавающих, используя float, перед тем умножения его на ** 6

    freq = float(input("Enter frequency (mHz): ")) * 10**6 
    
  2. Вычисления 10 длин волн неправильно
    Примера размерный анализ: [L] != (1/[T]) * [L]/[T] = [L]/[T]^2

    wl = c/freq 
    
1

Вы умножая строку:

input("Enter frequency (mHz): ") * 10**6 
wl = freq * 299792458 

Вы, вероятно, означало:

freq = int(input("Enter frequency (mHz): ")) * 10**6 
wl = freq * 299792458 
3

Если вы используете Python 3.x, input возвращает строковый объект.

Если вы хотите умножить число, преобразуйте возвращаемое значение строки в числовое значение.

freq = int(input("Enter frequency (mHz): ")) * 10**6 

или

freq = float(input("Enter frequency (mHz): ")) * 10**6 
Смежные вопросы