我在观看youtube时很无聊,所以我开始编写基本的字符随机化程序。然后我想到了三个字母单词,它们具有36个不同的字符可供选择。
package stackedbar;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedBarChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Label;
/**
*
* @author kuupie
*/
public class FXMLDocumentController implements Initializable {
private Label label;
@FXML
private StackedBarChart<String, Number> chartBar;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
start();
}
public void start() {
// TODO Auto-generated method stub
//Configuring xaxis and yaxis
CategoryAxis xaxis = new CategoryAxis();
NumberAxis yaxis = new NumberAxis(1000,300000,1000);
xaxis.setLabel("Months");
yaxis.setLabel("Number of users");
//Configuring StackedBarChart
StackedBarChart chartBar = new StackedBarChart(xaxis,yaxis);
chartBar.setTitle("Popularity of Programming languages");
//Configuring series for java
XYChart.Series java = new XYChart.Series<>();
java.setName("java");
java.getData().add(new XYChart.Data<>("Jan",10000));
java.getData().add(new XYChart.Data<>("Jan",130000));
java.getData().add(new XYChart.Data<>("Feb",50000));
java.getData().add(new XYChart.Data<>("Mar",60300));
java.getData().add(new XYChart.Data<>("Apr",105600));
java.getData().add(new XYChart.Data<>("May",50600));
java.getData().add(new XYChart.Data<>("Jun",103000));
java.getData().add(new XYChart.Data<>("Jul",104500));
java.getData().add(new XYChart.Data<>("Aug",203000));
java.getData().add(new XYChart.Data<>("Sep",103400));
java.getData().add(new XYChart.Data<>("Oct",105600));
java.getData().add(new XYChart.Data<>("Nov",102400));
java.getData().add(new XYChart.Data<>("Dec",200000));
//Adding series java to the stackedbarchart
chartBar.getData().add(java);
//Configuring series python
XYChart.Series python = new XYChart.Series<>();
python.setName("python");
python.getData().add(new XYChart.Data<>("Jan",50000));
python.getData().add(new XYChart.Data<>("Jan",14300));
python.getData().add(new XYChart.Data<>("Feb",50400));
python.getData().add(new XYChart.Data<>("Mar",100500));
python.getData().add(new XYChart.Data<>("Apr",104000));
python.getData().add(new XYChart.Data<>("May",134000));
python.getData().add(new XYChart.Data<>("Jun",60000));
python.getData().add(new XYChart.Data<>("Jul",78000));
python.getData().add(new XYChart.Data<>("Aug",89000));
python.getData().add(new XYChart.Data<>("Sep",150000));
python.getData().add(new XYChart.Data<>("Oct",120000));
python.getData().add(new XYChart.Data<>("Nov",109450));
python.getData().add(new XYChart.Data<>("Dec",50450));
//adding python series to the stackedbarchart
chartBar.getData().add(python);
}
}
此代码使我可以将46656或36 ^ 3三个字母单词,因为这是我正在使用多少个字符。奇怪的是,当它写入文件时,我得到如下信息: 〰ⱨ。为什么?这是什么?是Unicode吗? Python 3.5 BTW
答案 0 :(得分:1)
是Unicode吗?
是的。但是您可能会惊讶地发现<div> 1 </div>
,"a"
等都是也是 Unicode。
之所以会出现这些奇怪的字符,是因为您以两字节Unicode编码的文本打开或查看了输出文件。
您看到的某些代码超出了"b"
范围,其中第一个代码是逗号,第二个代码是您的字母之一。例如,ⰶ是这样的:http://www.fileformat.info/info/unicode/char/2c36/index.htm。其他怪异字符也是通过将两个随机字符组合到一个双倍宽Unicode值中而形成的。
使用十六进制编辑器检查生成的文件,您确实可以得到预期的3个字母的组合,并用逗号分隔:
U+2C00
由于某种原因,您的文本文件查看器认为这应该是2字节Unicode文本。如果解决此问题,您将看到您的代码按预期工作。
答案 1 :(得分:0)
您错误地解释了unicode文件。您还可以稍微简化一下代码:
import random
from string import ascii_lowercase,digits
words = []
chars = ascii_lowercase+digits
for _ in range(10): # 46656 - reduced amount to 10
# words.append( random.choices(chars,k=3) ) # python 3.6 has choices
words.append( [ random.choice(chars),random.choice(chars),
random.choice(chars)] ) # python 3.5 got no choices
words.sort()
with open("./ThreeLetters.txt","w+",encoding ="utf-8") as file:
for w in words:
file.write(str(w) + ",")
您可以像这样在控制台中打印文件而不会发生意外:
# and output it again
with open("./ThreeLetters.txt", encoding ="utf-8") as f:
print(f.read())
输出:
['1', '2', 'n'],['9', '6', 'f'],['j', 'o', 'k'],['n', '1', '4'],['n', 'o', '9'],['s', 'c', 'l'],['v', 'l', 'b'],['v', 'o', 'a'],['w', '7', 'u'],['z', '3', '6'],
我将文件写入固定为更本地化-距离顶部不远,并且还使用with open(..) as f:
使文件更健壮。
请参阅: