3

我正在尝试学习如何编程,但遇到了问题....

我试图弄清楚如何确保有人输入数字而不是字符串。我发现的一些相关答案令人困惑,有些代码对我不起作用。我想有人发布了 try: 函数,但它不起作用,所以也许我需要导入一个库?

这是我现在正在尝试的:

代码:

print "Hi there! Please enter a number :)"
numb = raw_input("> ")

if numb != str()
    not_a_string = int(next)
else:
    print "i said a number, not a string!!!"

if not_a_string > 1000:
    print "You typed in a large number!"

else:
    print "You typed in a smaller number!"

我在问的时候还有另一个问题。我怎样才能让它接受大写和小写拼写?在下面的代码中,如果我输入“Go to the mall”但使用小写 G,它不会运行 if 语句,因为它只接受大写 G。

print "What would you like to do: \n Go to the mall \n Get lunch \n Go to sleep"
answer = raw_input("> ")

if answer == "Go to the mall":
    print "Awesome! Let's go!"
elif answer == "Get lunch":
    print "Great, let's eat!"
elif answer == "Go to sleep":
    print "Time to nap!"
else:
    print "Not what I had in mind...."

谢谢。^^

编辑:我也在使用 python 2.7 而不是 3.0

4

3 回答 3

4

你可以这样做:

while True: #infinite loop
   ipt = raw_input(' Enter a number: ')
   try:
      ipt = int(ipt)
      break  #got an integer -- break from this infinite loop.
   except ValueError:  #uh-oh, didn't get an integer, better try again.
      print ("integers are numbers ... didn't you know? Try again ...")

要回答您的第二个问题,请使用.lower()string 方法:

if answer.lower() == "this is a lower case string":
   #do something

如果您愿意,可以使您的字符串比较非常健壮:

if answer.lower().split() == "this is a lower case string".split():

在这种情况下,您甚至可以匹配诸如“ThIs IS A lower Case\tString”之类的字符串。为了在您接受的内容上更加自由,您需要使用正则表达式。

(并且所有这些代码都可以在 python2.x 或 3.x 上正常工作——我通常将我的打印语句括在括号中以使其适用于任一版本)。

编辑

此代码在 python3.x 上不太适用——在 python3 中,您需要更改raw_inputinput使其工作。(对不起,忘了那个)。

于 2012-07-31T03:02:01.427 回答
0

首先,每个帖子你应该只问一个问题。

Q1:使用内置的 .isdigit()

if(numb.isdigit()):
    #do the digit staff

Q2:您可以使用 string.lower(s) 来解决资本问题。

于 2012-07-31T03:12:57.113 回答
0

你可以试试


    numb = numb.strip()
    if numb.isdigit() or (numb[0] in ('+', '-') and numb[1:].isdigit():
        # process numb

于 2013-07-19T16:51:26.730 回答