CodeCreeper
CodeCreeper

Reputation: 51

I'm trying to create a countdown timer, but it doesn't work

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

Answers (2)

Vivek Sable
Vivek Sable

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

logic
logic

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

Related Questions