osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Flag control variable


Op dinsdag 11 februari 2014 19:51:40 UTC+1 schreef Peter Otten:
> luke.geelen at gmail.com wrote:
> 
> 
> 
> > well i'm trying something else but no luck :
> 
> > 
> 
> > #!bin/bash/python
> 
> 
> 
> Hm.
> 
> 
> 
> > import sys
> 
> > import os
> 
> 
> 
> For debugging purposes put the line
> 
> 
> 
> print sys.argv
> 
> 
> 
> here to see what arguments are passed to the script. When you type
> 
> 
> 
> $ python script.py 2 * 2
> 
> 
> 
> in the shell the "*" sign is replaced with all items in the current 
> 
> directory. To avoid that you have to escape, i. e. prepend a backslash:
> 
> 
> 
> $ python script.py 2 \* 2
> 
> 
> 
> To illustrate:
> 
> 
> 
> $ touch one two three
> 
> $ ls
> 
> one  three  two
> 
> $ python -c 'import sys; print sys.argv' 2 + 2
> 
> ['-c', '2', '+', '2']
> 
> $ python -c 'import sys; print sys.argv' 2 * 2
> 
> ['-c', '2', 'one', 'three', 'two', '2']
> 
> $ python -c 'import sys; print sys.argv' 2 \* 2
> 
> ['-c', '2', '*', '2']
> 
> 
> 
> > a = int(sys.argv[1])
> 
> > sign = (sys.argv[2])
> 
> > b = int(sys.argv[3])
> 
> > 
> 
> > if sign == '+':
> 
> >   sum = a + b
> 
> >   print a, sign, b, "=", a + b
> 
> >   command1 = "sudo mpg321 
> 
> >   'http://translate.google.com/translate_tts?tl=en&q=%s_plus%s_equals%s'"
> 
> >   % (a, b, sum) os.system (command1)
> 
> > 
> 
> > elif sign == "*":
> 
> >   sum = a * b
> 
> >   print a, sign, b, "=", a * b
> 
> >   command1 = "sudo mpg321 
> 
> >   'http://translate.google.com/translate_tts?tl=en&q=%s_times%s_equals%s'"
> 
> >   % (a, b, sum)
> 
> > 
> 
> > when using * i get
> 
> > 
> 
> > Traceback (most recent call last):
> 
> >   File "./math+.py", line 6, in <module>
> 
> >     b = int(sys.argv[3])
> 
> > ValueError: invalid literal for int() with base 10:
> 
> > 'Adafruit-Raspberry-Pi-Python-Code'
> 
> > 
> 
> > i don't understand why b is a problem, it works fine with +

when using python script.py 2 \* 2
i get 

Traceback (most recent call last):
  File "math2.py", line 5, in <module>
    sign = int(sys.argv[2])
ValueError: invalid literal for int() with base 10: '*'