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を使用すると、大文字のGしか受け入れないため、ifステートメントは実行されません。

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...."

ありがとう。^^

編集:私は3.0ではなくPython2.7も使用しています

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 ...")

2番目の質問に答えるには、.lower()文字列メソッドを使用します。

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

次の場合は、文字列の比較を非常に堅牢にすることができます。

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

この場合、「これは小文字です\tString」のような文字列にも一致します。受け入れるものをさらに自由にするには、正規表現を使用する必要があります。

(そして、このコードはすべてpython2.xまたは3.xで問題なく機能します。通常、どちらのバージョンでも機能するように、printステートメントを括弧で囲みます)。

編集

このコードはpython3.xでは完全には機能しません。python3では、に変更raw_inputinputて機能させる必要があります。(申し訳ありませんが、それを忘れました)。

于 2012-07-31T03:02:01.427 に答える
0

まず、投稿ごとに1つの質問のみを行う必要があります。

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 に答える