编写程序,测试仅包含整数型元素的列表。要求键盘输入,并进行数据有效性判断,去掉重复元素后,升序输出列表。提示可采用字符串函数isdigit()判断是否为数值型 输入格式: 输入一个数字序列,如:1 23 33 45 6 7 33 输出格式: 针对合法输入,输出去重且按升序排序后的列表。例如:[1, 6, 7, 23, 33, 45]。 针对非法输入,输出“Wrong Format.”(非法输入指的是非数值型)
时间: 2024-02-06 13:10:37 浏览: 76
下面是 Python3 的代码实现:
```python
num_list = input().split() # 读入数字序列,以空格分隔
num_set = set() # 创建集合用于去重
# 判断输入数据是否合法,不合法则输出 "Wrong Format."
for num in num_list:
if not num.isdigit():
print("Wrong Format.")
exit()
num_set.add(int(num)) # 将数字加入集合中
sorted_list = sorted(num_set) # 升序排序
print(sorted_list) # 输出结果
```
代码思路:
1. 读入数字序列,并以空格分隔成列表 `num_list`。
2. 创建集合 `num_set`,用于去重。
3. 对于每一个元素 `num`,判断是否为数字,如果不是则输出 "Wrong Format." 并结束程序。
4. 如果 `num` 是数字,则将其转为整数类型,并加入集合 `num_set` 中。
5. 使用 `sorted()` 函数对集合 `num_set` 进行升序排列,得到排序后的列表 `sorted_list`。
6. 输出结果。
相关问题
编写程序,从键盘输入一个含有整数元素的列表,去除重复元素并输出
# 方法一:使用集合去重
lst = input("请输入一个含有整数元素的列表,元素之间使用空格分隔:").split()
lst = list(map(int, lst)) # 将输入的字符串列表转换为整数列表
lst = list(set(lst)) # 使用集合去重
print("去重后的列表为:", lst)
# 方法二:使用字典去重
lst = input("请输入一个含有整数元素的列表,元素之间使用空格分隔:").split()
lst = list(map(int, lst)) # 将输入的字符串列表转换为整数列表
dic = {} # 定义一个空字典
for i in lst:
dic[i] = None # 将列表中的元素作为字典的键
lst = list(dic.keys()) # 将字典的键转换为列表
print("去重后的列表为:", lst)
编写程序从键盘输入10个整数,对前一半元素升序排序,对后一半元素降序排序,要求用c语言
好的,以下是使用 C 语言的代码实现:
```c
#include <stdio.h>
int main() {
// 从键盘输入10个整数
int num_list[10];
for (int i = 0; i < 10; i++) {
printf("请输入第%d个整数:", i+1);
scanf("%d", &num_list[i]);
}
// 对前一半元素升序排序
int first_half[5];
for (int i = 0; i < 5; i++) {
first_half[i] = num_list[i];
}
for (int i = 0; i < 5; i++) {
for (int j = i+1; j < 5; j++) {
if (first_half[i] > first_half[j]) {
int temp = first_half[i];
first_half[i] = first_half[j];
first_half[j] = temp;
}
}
}
// 对后一半元素降序排序
int second_half[5];
for (int i = 0; i < 5; i++) {
second_half[i] = num_list[i+5];
}
for (int i = 0; i < 5; i++) {
for (int j = i+1; j < 5; j++) {
if (second_half[i] < second_half[j]) {
int temp = second_half[i];
second_half[i] = second_half[j];
second_half[j] = temp;
}
}
}
// 合并前后两半
for (int i = 0; i < 5; i++) {
num_list[i] = first_half[i];
}
for (int i = 0; i < 5; i++) {
num_list[i+5] = second_half[i];
}
// 打印排序后的结果
printf("排序后的结果为:");
for (int i = 0; i < 10; i++) {
printf("%d ", num_list[i]);
}
printf("\n");
return 0;
}
```
运行以上代码后,在命令行中输入10个整数,程序会自动对前一半元素升序排序,后一半元素降序排序,并输出排序后的结果。
阅读全文