2016-04-13 5 views
-2

私は配列をブラウズするコードを作成しようとしています。最後にユーザが進めたいときは、配列の先頭に移動します。アレイの開始時に、ユーザーが後方に移動したい場合は、配列の最後に移動します。私は一方的に見ることができますが、私は他の方法を続けていくことはできません。私がPに入ると、外見は完璧に働き続けています。 Fを入力すると、1回押すとループが停止します。 Fをpのように続けるように助けてください!Pythonで配列をブラウズするには?

#declaring array names. 
longitude=[]; latitude=[]; messagetext=[];encryptions=[]; 
input_file = open('messages.txt', 'r') 

#read file 
lines_in_file_array = input_file.read().splitlines() 


#appending the lines in a file to select records. 
for line in lines_in_file_array: 
    record_array = line.split(',') 
    longitude.append(record_array[0]) 
    latitude.append(record_array[1]) 
    messagetext.append(record_array[2]) 

#Stop reading from file 
input_file.close() 

#This encrypts the message by turning each character into their individual 
#ascii values, adding 2, then converting those ascii values back to that 
#values character. 
def encrypt(): 
    temporary_array=[] 
    for index in range(len(messagetext)): 
     x=messagetext[index] 
     x=([ord(character)+2 for character in x]) 
     codedx=''.join([chr(character) for character in x]) 
     temporary_array.append(codedx) 
    global temporary_array 


def navigation(): 
    # Index position 
    i = 0; 

    # Loop forever 
    while True: 


    # Get the user's input, and store the response in answer 
     answer = input("See Entry? P/F)?") 

     # If the user entered lower case or upper case Y 
     if answer.lower() == "f": 

      # print the message 
      print(messagetext[i % len(messagetext)]) 
      print(temporary_array[i % len(temporary_array)]) 
      print("") 

      # and add to the index counter 
      i = i + 1 

     if answer.lower() == "p": 

      # print the message 
      print(messagetext[i % len(messagetext)]) 
      print(temporary_array[i % len(temporary_array)]) 
      print("") 

      # and take away from the index counter 
      i = i - 1 


     # Otherwise leave the loop 
     else: 
      break 


encrypt() 
navigation() 
+0

https://stackoverflow.com/help/mcveし、[編集]あなたの質問をお読みください。 –

答えて

1

あなたが言う "もしF、この; P、これがあれば、そうで破ります;" "else"ステートメントは、fではなくpにのみ適用されます。

私が言っていることは、あなたがif answer.lower == 'p'をチェックする部分がifを言うべきではない、それはelifを言うべきであるとされています

if answer.lower() == "f": 
    i = i + 1 

elif answer.lower() == "p": 
    i = i - 1 

else: 
    break 
0

使用itertools.cycle

a = ["spam", "bacon", "baked beans"] 

# This will never end. 
for food in itertools.cycle(a): 
    print(a) 
+0

それは完全に正しいです、ただ一つです。これは無限の反復子です。だから、上記のコードは夢中になるだろうか?逆のサイクリングはどうですか? –

+0

そうです。だから私は「これは決して終わらない」と書いています。あなたは処理するために殺す必要があります。 –

0

以下の作品かどうかを確認し、lsがリストであると言います。

from itertools import cycle 
rls = reversed(ls) 
z = zip(cycle(ls), cycle(rls)) 
while True: 
    choice = input("n/p: ") 
    n, p = next(z) 
    result = n if choice == "n" else p 
    print(result) 

あなたの要件を満たしているかどうかを確認してください。もしそうであれば、ここではインデックス作成操作がないので、それは良いことです。コメントしないでください。

0

いくつかの変更:

  1. 他:ブレークのみpテストに適用します。インデックス要素を印刷する前に、最初の増分以外のサイクルで最初のサイクル
  2. に一意のテストを可能にするためにiNoneとして0開始時のインデックス位置ielif

  3. を追加ではなく開始することによって固定されています。これにより、ユーザーがpnの間で切り替えるときに要素を繰り返さないように、またはその逆にコードが構成されます。

    from sys import version_info 
    messagetext = ['one', 'two', 'three', 'four'] 
    
    def navigation(messagetext): 
        # Index position 
        i = None 
        py3 = version_info[0] > 2 #creates boolean value for test that Python major version > 2 
    
        # Loop forever 
        while True: 
         # Get the user's input, and store the response in answer 
         if py3: 
          answer = input('See Entry? P/F?') 
         else: 
          answer = raw_input('See Entry? P/F?') 
    
         # If the user entered lower case or upper case Y 
         if answer.lower() == 'f': 
          i = 0 if i == None else i + 1 
          print(messagetext[i % len(messagetext)]) 
          print("") 
    
         elif answer.lower() == 'p': 
          i = -1 if i == None else i - 1 
          # print the message 
          print(messagetext[i % len(messagetext)]) 
          print("") 
    
         # Otherwise leave the loop 
         else: 
          break 
    
    navigation(messagetext) 
    
関連する問題