2017-06-08 5 views
0

rand rangeステートメントのユーザー入力とソートされるリストの総数を追加しようとしましたが、何も正しく動作していないようです。変数がバブルソートプログラムのrand rangeステートメントで機能しない

import time 
import random 
def create_random_values(): 
    totalsortnum = (eval("Please enter the amount of numbers you wish to sort: ")) 

    rng1 = (eval("Please enter the maximum number range: ")) 
    randomList=[] 
    for i in range (totalsortnum): 
     randomList.append(random.randrange(1,rng1)) 
    return randomList, totalsortnum, rng1 


def main(): 
    numList = create_random_values() 
    print() 
    print("Here is a random list of 20 numbers between 1 and 1000:") 
    print(numList) 

    pause = input("Hit <Enter> to start sorting") 

    timeInitial = time.time() 
    l = len(numList) 
    for lastitem in range(l-1,0,-1): 
     sorted = True 
     for i in range(lastitem): 
      if numList[i] > numList[i+1]: 
       numList[i],numList[i+1] = numList[i+1],numList[i] 
       sorted = False 
      #print(numList) 
      #pause = input("Hit <Enter> to start sorting")  
     if sorted == True: 
      break 
    timeFinal = time.time() 
    print(numList) 

    print("the selection sort of",len(numList),"items took:") 
    print(timeFinal - timeInitial,"seconds.") 
+1

なぜあなたは、ユーザー入力を取得しようとする ')(' evalのを使用していますか? –

答えて

0

あなたのコードを持つカップルの問題があります:

create_random_values()の内部で使用すると、ユーザの入力をeval()を使用しようとしています。
eval()は、お望みの機能ではありません。input()が必要です。

numListの変数は3タプル、(randomList, totalsortnum, rng1)です。randomListを参照していると思います。

これはあなたのために働く必要があります。

import time 
import random 
def create_random_values(): 
    totalsortnum = int(input("Please enter the amount of numbers you wish to sort: ")) 

    rng1 = int(input("Please enter the maximum number range: ")) 
    randomList=[] 
    for i in range (totalsortnum): 
     randomList.append(random.randrange(1,rng1)) 
    return randomList, totalsortnum, rng1 

def main(): 
    numList, totalsortnum, rng1 = create_random_values() 
    print() 
    print("Here is a random list of {0} numbers between 1 and {1}:".format(totalsortnum, rng1)) 
    print(numList) 

    pause = input("Hit <Enter> to start sorting") 

    timeInitial = time.time() 
    l = len(numList) 
    for lastitem in range(l-1,0,-1): 
     sorted = True 
     for i in range(lastitem): 
      if numList[i] > numList[i+1]: 
       numList[i],numList[i+1] = numList[i+1],numList[i] 
       sorted = False 
      print(numList) 
      #pause = input("Hit <Enter> to start sorting")  
     if sorted == True: 
      break 
    timeFinal = time.time() 
    print(numList) 

    print("the selection sort of",len(numList),"items took:") 
    print(timeFinal - timeInitial,"seconds.") 
関連する問題