python中的直方图
我想画一个柱状图2 - 11和每个酒吧的数量将达到这一数字的链长。我有一个冰雹序列如下考虑
选择 | 换行 | 行号
- import string
- # from graphics import *
- from graphics import *
- #Constant
- MAX = 10000
- # printing functions
- # this function prints a brief description of the program to the user
- # Inputs: none
- # Outputs : none
- def printGreeting():
- print ""
- print " This program finds hailstones sequences of numbers"
- print " you choose. The next number in the sequence if found by"
- print " either dividing it by two(if even) or multiplying by 3"
- print " and adding 1(if odd).The program quits when the last"
- print " number in the sequence is 1\n"
- # this functions prints the menu for the user
- # Inputs: none
- # Outputs : none
- def printMenu():
- print "\n\tHere are your menu choices:"
- print "\n\tI - view squence for an individual value\n"
- print "\tR - veiw sequence for range of values\n"
- print "\tL - Find the longest chain\n"
- print "\tH - Print out the histogram\n"
- print "\tQ - Quit\n\n"
- # end of printing funtions
- # hailstone(number) prints the hailstone sequence
- # Inputs: number
- # Outputs: none
- def hailstone(n):
- length = 1
- print n,
- # checks if n is not sential
- while n != 1:
- # if even, divide by 2 (rule). add 1 to length
- if n % 2 == 0:
- n = n / 2
- print "->",n,
- length = length + 1
- # if odd, multiply by 3, add 1 (rule). add 1 to length
- elif n % 2 != 0:
- n = ( 3 * n ) + 1
- print "->",n,
- length = length + 1
- # print the length at the end of each chain
- print "; length =",length
- print "----------------------------------------------------------------",
- print "--------------\n"
- return length
- # this function returns the length of each chain from the starting number, n
- # Inputs : n
- # Outputs : none
- def chain(n):
- length = 1
- while n != 1:
- # if even, divide by 2 (rule). add 1 to length
- if n % 2 == 0:
- n = n / 2
- length = length + 1
- # if even, divide by 2 (rule). add 1 to length
- elif n % 2 != 0:
- n = ( 3 * n ) + 1
- length = length + 1
- return length
- # getValidInt() prompts the user to enter an integer in the specified range,
- # rejects values not in that range by requiring new input, and only returns
- # a valid integer.
- # Inputs: the question of the prompt,
- # the minimum value in the range
- # and the maximum value in the range
- # Output: an integer in the specified range
- def getValidInt(question, min, max):
- # use a bad value to enter the loop
- value = max + 1
- # compose the prompt
- prompt = question + " (" + str(min) + "-" + str(max) + "): "
- # continue to get values until the user enters a valid one
- while value == "" or value < min or value > max:
- value = raw_input(prompt)
- if len(value) != 0:
- value = int(value)
- # return a valid value
- return value
- # this function finds the longest chain
- # Inputs: none
- # Outputs : none
- def longChain():
- begin = "Please enter the begining integer for the range"
- end = "Please enter the ending integer for the range"
- # calls to getValidInt for starting and ending values
- beginNum = getValidInt(begin, 1, MAX)
- endNum = getValidInt(end, beginNum + 1, MAX)
- largestChain = beginNum
- for i in range(beginNum, endNum+1):
- if largestChain <= chain(i):
- largestChain = i
- length = chain(i)
- print largestChain, " had the longest chain ", length
- # this function finds the longest chain***************************8
- # Inputs: none*************
- # Outputs : none
- def histogram():
- # initialize variables
- longestLength = 1
- list = []
- start = input("Please enter the begining integer for the range: ")
- for n in range (start, start + 10):
- length = chain(n)
- list.append(length)
- if longestLength <= chain(n):
- longestLength = n
- length = chain(n)
- print longestLength
- print list
- def main():
- # prints the greeting to the user
- printGreeting()
- # prints the menu to the user
- printMenu()
- # asks user the menu choice
- choice = raw_input("Please enter your choice : ").upper()
- # checks to see if choice entered is from the menu
- while choice != 'Q':
- # if choice is "I" or "i", proceeds to follow the individual steps
- if choice == 'I':
- n = input("Please enter your integer (1-10000):")
- hailstone(n)
- # if choice is "R" or "r", proceds print each number and its sequence
- # until the last number is 1, uses getValidInt to get valid integers
- # for the function
- elif choice == 'R':
- begin = "Please enter the begining integer for the range"
- end = "Please enter the ending integer for the range"
- # calls to getValidInt for starting and ending values
- beginNum = getValidInt(begin, 1, MAX)
- endNum = getValidInt(end, beginNum + 1, MAX)
- # for loop to get the values between starting and ending value
- for n in range(beginNum,endNum+1):
- #call to the hailstone function
- hailstone(n)
- # if choice is "L" or "l", proceeds to use getValidInt again to get the
- # range, error checks on the range, and then calls the function chain
- # to determine the length.
- elif choice == 'L':
- # call to function longchain
- longChain()
- elif choice == 'H':
- histogram()
- # if niether of the menu choices, then it prints that the
- # entered text is not a valid choices
- else:
- print choice, "is not a valid choice"
- # prints the menu to the user
- printMenu()
- # asks user the menu choice
- choice = raw_input("Please enter your choice : ").upper()
- main()
但是我怎么能画一个柱状图2 - 11和每个酒吧的数量将达到这一数字的链长度在这个冰雹序列。