我有一个非常简单的程序来对数据进行排序并将其写入文本文件,但是排序后的方法并没有实现应有的功能。取而代之的是,值按我输入它们的顺序输入数组和文本文件。谁能迅速解释原因?
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
tools:context=".EnterPipeIEActivity">
<LinearLayout
android:id="@+id/linear_layout_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/add_pipe_ie_title"
android:textSize="35sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/textView11"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/channelized_pipes"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="CheckBox" />
</LinearLayout>
</LinearLayout>
</ScrollView>
答案 0 :(得分:0)
我无法重新创建您的问题。下面的代码可以正常工作,正确地对给定的数字进行排序,然后写入文件。
您还要对数组进行两次排序,我已对其进行了纠正。
values = []
sorted_values = []
data = 1
while data:
data = input('Enter the values. Press enter to confirm values:')
if data:
values.append(data)
else:
data = data
# here you are sorted it first and second outside of while loop
sorted_values = sorted(values)
print(sorted_values)
print(sorted_values)
with open("sortedvalues.txt", "a+") as name:
name.write('\n' + str(sorted_values))
with open("sortedvalues.txt", "r") as open1:
print('reading')
print (open1.read())
输入:
5
3
4
2
1
0
内部文件:
[1, 2, 3, 4, 5]
答案 1 :(得分:0)
@JohnGordon在下面的评论中回答了这个问题。问题不在于代码的工作方式,这可能是不正确的。问题在于整数值实际上被当作字符串进行排序,就好像它们是字符串一样。输入值首先需要进行转换,然后再进行排序。
编辑我应该补充一点,将输入指定为整数会导致回溯,因为null(当用户按Enter确认输入的值时)不能解析为整数。要解决此问题,我只需添加
while data:
data = input('Enter the values. Press enter to confirm values:')
if data:
values.append(int(data))
else:
data = data
print(sorted(values))
具体来说,在if data:
部分中,指定将数据作为int追加到列表中可以解决此问题,并且sorted
或.sort()
方法可以正常工作。