using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using LockRotationWpf.Annotations;
namespace LockRotationWpf.ViewModels
{
// Omit the INotifyPropertyChanged implementation if already implemented on a base ViewModel class.
public class MainWindowViewModel : INotifyPropertyChanged
{
public double _angle;
public MainWindowViewModel()
{
Microsoft.Win32.SystemEvents.DisplaySettingsChanged += DisplaySettingsChanged;
}
private void DisplaySettingsChanged(object sender, EventArgs e)
{
Angle = System.Windows.SystemParameters.PrimaryScreenHeight > System.Windows.SystemParameters.PrimaryScreenWidth ? -90 : 0;
}
public double Angle
{
get { return _angle; }
set
{
_angle = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
最后,当我尝试打印列表中的所有元素时,仅打印了最后一个元素。
答案 0 :(得分:1)
您需要在循环外而不是每次在循环内创建列表name_list = []
:
Ps。对您的range()
进行一些更改:
name_list = []
totalNum = int(input("No of people?"))
for i in range(totalNum):
name = input("Name?")
name_list.append(name)
print(name_list)
答案 1 :(得分:0)
您的代码存在的问题是您在每次迭代中都要重新初始化列表,因此一旦循环完成,就会打印出最后一个列表。
这是代码的固定版本
totalNum = int(input("No of people?"))
name_list = []
for _ in range(totalNum):
name = input("Name?")
name_list.append(name)
print(name_list)
还要注意这里使用_
,这是python中的一个特殊的丢弃变量,如果只需要一个虚拟变量来遍历序列,则可以使用它。
此外,您无需像range
那样初始化range(1,totalNum+1)
,因为python序列始终从0开始,您可以执行range(totalNum)
。
答案 2 :(得分:0)
这里的问题是,在循环内您重新初始化了 name_list 变量。 尝试放在for / in语句之外