好的,对于中期审查,这是我需要解决的一个问题:
/////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////////////////
设计并实现一个应用程序,该应用程序创建100个随机正整数值,范围为1到100,然后创建一个图表,显示值出现的频率。该图表应如下所示。它显示有多少值落在1到10,11到12之间,依此类推。为每个输入的值打印一个星号。
注意: 一个。您必须使用列表 湾不要使用if语句
以下示例:
1 - 10 | ****
11 - 20 | **
21 - 30 | ****************
31 - 40 |
41 - 50 | ***
51 - 60 | ********
61 - 70 | ****************
71 - 80 | *****
81 - 90 | *
91 - 100 | ***
/////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////
无论如何,到目前为止这是我的代码:
import random
frequency = [0,0,0,0,0,0,0,0,0,0]
for roll in range( 1,101 ):
face = random.randrange( 1, 100 )
frequency[face%10] += 1
print(frequency)
for i in range( len( frequency ) ):
print("%7d%5d %-s" % ((i+1,frequency[i], "*" * frequency[i])))
/////////////////////////////////////////////// /////////////////////////////////
当我打印时,这就是我得到的:
[8, 12, 8, 12, 12, 9, 9, 11, 9, 10]
1 8 ********
2 12 ************
3 8 ********
4 12 ************
5 12 ************
6 9 *********
7 9 *********
8 11 ***********
9 9 *********
10 10 **********
/////////////////////////////////////////////// ///////////////////////////////////////////////// < / p>
我的程序运行正常,但我的问题代码是这部分:
print("%7d%5d %-s" % ((i+1,frequency[i], "*" * frequency[i])))
/////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////
我的问题是我不知道如何做原始示例中的1 - 10,11-20等部分。我所知道的就是让它向上计数(1,2,3,4,5等)
帮助?
答案 0 :(得分:0)
所以你拥有i in range(something)
,然后你拥有print i+1
而得到1,2,3,...
,但你想让1-10,11-20,21-30,...
正确吗?那么print i*10+1,"-",(i+1)*10
应该给你你想要的东西。
答案 1 :(得分:0)
你差点接近,试试这个:
import random
frequency = [0,0,0,0,0,0,0,0,0,0]
for roll in range( 1,101 ):
face = random.randrange( 1, 100 )
frequency[face%10] += 1
print(frequency)
for i in range(len(frequency)):
print("%7d-%2d %5d %-s" % ((i*10+1,(i+1)*10,frequency[i], "*" * frequency[i])))
在最后一行再添加一个数字。这只是一个小数学技巧。
答案 2 :(得分:0)
我认为您应该使用/
而不是
%
frequency[face%10] + 1
然后面值1~10将
frequency[0] += 1
因此,频率数组的第一项意味着1-10
答案 3 :(得分:0)
看起来你很近,你只需要做一些改变......:
import random
frequency = [0,0,0,0,0,0,0,0,0,0]
for roll in range( 1,101 ):
face = random.randrange( 1, 100 )
frequency[face // 10] += 1
print(frequency)
for i in range( len( frequency ) ):
print("%2d - %3d %5d %-s" %
(((10*i+1, 10*i+10, frequency[i], "*" * frequency[i]))))
我正在使用face // 10
(截断除法),你使用的face % 10
(模数)毫无意义,并稍微改变了最终print
中的格式 - 保持尽可能接近尽可能使用您的代码。
我认为有更好的方法但是这个方法足够好,而且我们都知道(或者应该知道:-),“足够好就足够了”! - )