Reputation: 51
I'm trying to make a Python programmed timer; is anything wrong here?
#CTimer
import os;
import time
#vl
repeater = 2
sleeptime = 0.00
#code
while repeater==2:
print("-CTimer-")
print("\n")
print("Set time")
print("Use preset")
print("Exit")
print("\n")
var1 = input(">>>")
if var1=="set time":
sleeptime = input("Set time:")
start = input("Start")
time.sleep(sleeptime)
os.system("C:/Python34/Scripts/alsctimer64an.bat")
if var1=="use preset":
print("1min")
print("5min")
print("10min")
print("20min")
print("30min")
print("45min")
print("1hour")
print("\n")
usepreset = input("Use preset:")
if usepreset=="1min":
start = input("Start")
time.sleep(60)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="5min":
start = input("Start")
time.sleep(300)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="10min":
start = input("Start")
time.sleep(600)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="20min":
start = input("Start")
time.sleep(1200)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="30min":
start = input("Start")
time.sleep(1800)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="45min":
start = input("Start")
time.sleep(2700)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="1hour":
start = input("Start")
time.sleep(3600)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if var1=="exit":
print("Exiting...")
time.sleep(5)
exit()
Upvotes: 2
Views: 231
Reputation: 10221
Type Casting
Need to do Type Casting of user enter value. Because data type of sleeptime
variable is string and time.sleep()
method need float or int. So do Type Casting.
Demo:
>>> import time
>>> sleeptime = raw_input("Set time:")
Set time:1.2
>>> sleeptime
'1.2'
>>> type(sleeptime)
<type 'str'>
>>> time.sleep(sleeptime)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a float is required
>>> time.sleep(float(sleeptime))
>>>
Exception Handling during Type Casting
User might enter wrong value, so add exception Handling code during Type Casting.
Demo:
>>> try:
... sleeptime = float(raw_input("Set time:"))
... except ValueError:
... print "Value Error, Enter only float value"
... sleeptime = 0.0
...
Set time:we
Value Error, Enter only float value
>>> try:
... sleeptime = float(raw_input("Set time:"))
... except ValueError:
... print "Value Error, Enter only float value"
... sleeptime = 0.0
...
Set time:10.1
>>> print sleeptime, type(sleeptime)
10.1 <type 'float'>
>>>
Use if-elif-else loop
Demo:
if usepreset=="1min":
pass
#code
elif usepreset=="5min":
pass
#code
elif usepreset=="10min":
pass
#code
else:
print ("Enter Wrong Input.")
No need of extra variable repeater = 2
, use True
or 1
or any true value (Not not use 0
, False
, ''
)
While True:
# add your code.
In code, do Type casting at following line
sleeptime = float(input("Set time:"))
^^^
Note:
Use input() for Python 3.x
Use raw_input() for Python 2.x
Upvotes: 1
Reputation: 1727
You just had to add float()
to make your sleeptimer
variable readable by the time.sleep()
function:
#CTimer
import os;
import time
#vl
repeater = 2
sleeptime = 0.00
#code
while repeater==2:
print("-CTimer-")
print("\n")
print("Set time")
print("Use preset")
print("Exit")
print("\n")
var1 = input(">>>")
if var1=="set time":
sleeptime = float(input("Set time:")) #<-- add float()
start = input("Start")
time.sleep(sleeptime)
os.system("C:/Python34/Scripts/alsctimer64an.bat")
if var1=="use preset":
print("1min")
print("5min")
print("10min")
print("20min")
print("30min")
print("45min")
print("1hour")
print("\n")
usepreset = input("Use preset:")
if usepreset=="1min":
start = input("Start")
time.sleep(60)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="5min":
start = input("Start")
time.sleep(300)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="10min":
start = input("Start")
time.sleep(600)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="20min":
start = input("Start")
time.sleep(1200)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="30min":
start = input("Start")
time.sleep(1800)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="45min":
start = input("Start")
time.sleep(2700)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if usepreset=="1hour":
start = input("Start")
time.sleep(3600)
os.system("C:/Python34/Scripts/alsctimer64an.bat");
if var1=="exit":
print("Exiting...")
time.sleep(5)
exit()
Upvotes: 1