关于python:如何使原始输入成为数字?

How to make a raw input a number?

本问题已经有最佳答案,请猛点这里访问。

我想在我的树莓圆周率上做一个简单的程序,它可以让一个LED灯闪烁的次数和你输入的数字一样多。我的程序正在运行,但有点重复:

1
2
3
4
5
6
7
8
9
10
11
times = raw_input('Enter a number: ')
if times == '1':
    times = 1
elif times == '2':
    times = 2
elif times == '3':
    times = 3
elif times == '4':
    times = 4
elif times == '5':
    times = 5

这需要很多编程来处理更大的输入,比如145。

有人知道一种更聪明更快的方法吗?

PS:代码完成;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   # I know i need to import GPIO and stuff, this is just an example.
import time
while True:
    try:
        times = int(raw_input('Enter a number: '))
        break
    except ValueError:
        print"Enter a number!"
print 'Ok, there you go:'
while times > -1:
    if times > 0:
        print 'hi'
        times = times-1
        time.sleep(1)
        continue
    elif times == 0:
        print 'That was it.'
        time.sleep(2)
        print 'Prepare to stop.'
        time.sleep(3)
        print '3'
        time.sleep(1)
        print '2'
        time.sleep(1)
        print '1'
        time.sleep(1)
        print 'BYE'
        break

谢谢您。


1
times = int(raw_input('Enter a number: '))

如果有人进入一中的东西比其他的整数,它将把一个例外。如果这是不是你想要的,你可以做你自己的异常和抓住手柄,像这样:

1
2
3
4
try:
    times = int(raw_input('Enter a number: '))
except ValueError:
    print"An integer is required."

如果你想让某人进入到所要求的输入有效的输入,在上述循环中:

1
2
3
4
5
6
while True:
    try:
        times = int(raw_input('Enter a number: '))
        break
    except ValueError:
        print"An integer is required."

在你的包或输入的数据intfloat这取决于你是expecting型。

1
2
times = int(raw_input('Enter a number: '))
print type(times)

输出:

1
2
Enter a number:  10
<type 'int'>

如果用户输入的数目比其他的东西,它将投掷ValueError(例如,inputing asdf结果:)

1
ValueError: invalid literal for int() with base 10: 'asdf'


你可以输入一个整数和灌注异常,如果不抓住它。

1
2
3
4
5
6
try:
    times = int(raw_input('Enter a number: '))
    # do something with the int
except ValueError:
    # not an int
    print 'Not an integer'