84

これが私のpythonコードです。誰かが私に何が悪いのか教えてもらえますか。

while 1:
date=input("Example: March 21 | What is the date? ")
if date=="June 21":
    sd="23.5° North Latitude"
if date=="March 21" | date=="September 21":
    sd="0° Latitude"
if date=="December 21":
    sd="23.5° South Latitude"
if sd:
    print sd

そして、何が起こるかは次のとおりです。

>>> 
Example: March 21 | What is the date? 
Traceback (most recent call last):
  File "C:\Users\Daniel\Desktop\Solar Declination Calculater.py", line 2, in <module>
    date=input("Example: March 21 | What is the date? ")
  File "<string>", line 0

   ^
SyntaxError: unexpected EOF while parsing
>>> 
4

11 に答える 11

125

:)raw_inputの代わりに使用input

を使用すると、入力したデータはPython 式inputとして解釈されます。つまり、gawd はターゲット変数内のオブジェクトのタイプを認識し、生成される可能性のあるさまざまな例外が発生します。したがって 、Python 式について少し知っている人だけが使用する、一時的なテストのために何かを入れる場合を除き、使用しないでください。input

raw_input常に文字列を返します。これは、常に入力するものだからです...しかし、それを必要な特定の型に簡単に変換し、発生する可能性のある特定の例外をキャッチできます。うまくいけば、その説明があれば、どちらを使用すべきかを理解するのは簡単です。

参照

注: これは Python 2 のみです。Python 3 の場合、raw_input()はプレーンinput()になり、Python 2input()は削除されました。

于 2011-02-22T05:08:34.090 に答える
16

インデント!最初。それはあなたの世話をするでしょうSyntaxError

それとは別に、プログラムには他にもいくつかの問題があります。

  • raw_input文字列を入力として受け入れたい場合に使用します。inputは Python 式のみを受け取り、それらに対して を実行evalします。

  • のような特定の 8 ビット文字をスクリプトで使用しています# -*- coding:latin-1 -*-一般にコーディング クッキーと呼ばれる行を使用して、スクリプトの先頭でエンコーディングを定義する必要がある場合があります。

  • また、str比較をしながら、文字列を正規化して比較します。(lower() it を使用している人々) これは、ユーザー入力にほとんど柔軟性を与えるのに役立ちます。

  • また、Python チュートリアルを読むことも役立つと思います。:)

サンプルコード

#-*- coding: latin1 -*-

while 1:
    date=raw_input("Example: March 21 | What is the date? ")
    if date.lower() == "march 21":

    ....
于 2011-02-22T05:06:47.660 に答える
4

@simon の回答は Python 2 で最も役立ちますが、Python raw_input3 にはありません。コードが Python 2 と Python 3 で同じように機能することを確認するために、次のことをお勧めします。

まず、pip install future:

$ pip install future

2 番目: future.builtins からの入力のインポート

# my_file.py    
from future.builtins import input
str_value = input('Type something in: ')

上記の特定の例では、次のようになります。

# example.py
from future.builtins import input
my_date = input("Example: March 21 | What is the date? ")
于 2016-04-01T00:26:36.427 に答える
1

After the first if statement instead of typing "if" type "elif" and then it should work.

Ex.

`    while 1:
    date=input("Example: March 21 | What is the date? ")
if date=="June 21":
    sd="23.5° North Latitude
elif date=="March 21" | date=="September 21":
    sd="0° Latitude"
elif date=="December 21":
    sd="23.5° South Latitude"
elif sd:
    print sd `
于 2016-06-06T00:04:16.520 に答える
1

私は同じことに出くわし、問題が何であるかを理解しました。メソッド入力を使用する場合、入力する応答は二重引用符で囲む必要があります。あなたのラインのように date=input("Example: March 21 | What is the date? ")

"コンソールにプロンプ​​トが表示されたら「12/12/2015」と入力する必要があります。前後に注意してください。このようにして、それを文字列として受け取り、期待どおりに処理します。これがこのinput方法の制限であるかどうかはわかりませんが、このように機能します。

それが役に立てば幸い

于 2015-02-22T08:46:08.753 に答える
0

試すことができるのは、通常のinputコマンドを使用して、Python の通常のコードを記述することです。ただし、トリックは、プログラムの最初にコマンドを追加することですinput=raw_input

Python/IDLE またはターミナルのどちらで実行しているかに応じて、無効化 (または有効化) するだけです。これは、必要に応じて「#」を追加するだけで実行できます。

Python/IDLE で使用するためにオフにしました

    #input=raw_input 

もちろん、ターミナルで使用するためにオンにします。

    input=raw_input 

常に機能するかどうかはわかりませんが、単純なプログラムまたはスクリプトの可能な解決策です。

于 2013-06-23T16:21:17.807 に答える
0

コンパイラのバージョンを確認してください。

  1. Python2 を扱っている場合は、次を使用します -

n= raw_input("Enter your Input: ")

  1. あなたがpython3使用を扱っているなら -

n= input("Enter your Input: ")

于 2021-01-01T05:04:38.120 に答える
-2

関数のすべてのパラメーターが呼び出される前に定義されているかどうかを確認します。Kaggleの練習中にこの問題に直面しました。

于 2016-09-17T10:47:11.987 に答える